PDA

View Full Version : اسلاید شو داینامیک با ریپیتر



masud8002k
دوشنبه 01 اسفند 1390, 12:13 عصر
سلام دوستان

من خیلی مدته با استفاده از مقالات سایت و....میخوام اسلاید شو داینامیک درست کنم ولی نتونستم

فقط اگر شما در این مورد راهنمایی کنی فکر کنم دیگه بتونم حلش کنم

این کد divمن هست که اسلاید شو در اون نشون میده بدون مشکل

<div class="box_skitter box_skitter_large">
<ul>
<li><a href="#cube">
<img src="images/001.jpg" class="cube" /></a><div class="label_text">
<p>
ONE</p>
</div>
</li>
<li><a href="#cubeRandom">
<img src="images/002.jpg" class="cubeRandom" /></a><div class="label_text">
<p>
TWO</p>
</div>
</li>
<li><a href="#block">
<img src="images/003.jpg" class="block" /></a><div class="label_text">
<p>
THREE</p>
</div>
</li>
<li><a href="#cubeStop">
<img src="images/004.jpg" class="cubeStop" /></a><div class="label_text">
<p>
FOUR</p>
</div>
</li>
</div> </li>
</ul>

</div>





حالا دیتا بیس من هم با نامimg

دارای دو فیلد nameوimgهستش

عکس های منم در پوشه imagesذخیره میشه حالا عکس ها رو میفرستم اسمشون رو ذخیره میکنم ولی حالا با ریپتر چطوری داینامیکشون کنم نمیدونم؟؟؟؟؟؟؟؟؟؟
اگر ممکن بود با کدش بذارید ممنون میشم خیلی مدته (مبتدی هستم)نتوسنتم حلش کنم


ممنون میشم راهنماییم کنید.

sara_aryanfar
دوشنبه 01 اسفند 1390, 13:04 عصر
کد زیر عکس رو برای ما واکشی می کنه که شما می تونی کوئری رو بر حسب نیاز تغییر بدین

SqlConnection conobj2 = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString"].ConnectionString);
string comtxt2 = "select * from example";
SqlCommand comobj2 = new SqlCommand(comtxt2, conobj2);
SqlDataAdapter da2 = new SqlDataAdapter(comobj2);
DataTable dt2 = new DataTable();
da2.Fill(dt2);
if (dt2.Rows.Count > 0)
{
try
{
Image6.ImageUrl = "~/exampleimage/" + dt2.Rows[0]["image"].ToString();

HyperLink1.NavigateUrl = "~/viwe.aspx?cod=" + dt2.Rows[0]["id"].ToString();
Image7.ImageUrl = "~/exampleimage/" + dt2.Rows[1]["image"].ToString();
HyperLink2.NavigateUrl = "~/viwe.aspx?cod=" + dt2.Rows[1]["id"].ToString();
Image8.ImageUrl = "~/exampleimage/" + dt2.Rows[2]["image"].ToString();
HyperLink3.NavigateUrl = "~/viwe.aspx?cod=" + dt2.Rows[2]["id"].ToString();
Image9.ImageUrl = "~/exampleimage/" + dt2.Rows[3]["image"].ToString();
HyperLink4.NavigateUrl = "~/viwe.aspx?cod=" + dt2.Rows[3]["id"].ToString();
Image10.ImageUrl = "~/exampleimage/" + dt2.Rows[4]["image"].ToString();
HyperLink5.NavigateUrl = "~/viwe.aspx?cod=" + dt2.Rows[4]["id"].ToString();
Image11.ImageUrl = "~/exampleimage/" + dt2.Rows[5]["image"].ToString();
HyperLink6.NavigateUrl = "~/viwe.aspx?cod=" + dt2.Rows[5]["id"].ToString();
}
catch
{ }

}
conobj2.Close();
dt2.Clone();
من برای نشون دادن نمونه کار این کد رو استفاده می کنم و برای هر کدوم یک هایپر لینک هم گذاشتم که اگر شما نیاز نداری می تونی بر داری و فقط تصاویرت رو از اینجا بدی در این کد تصاویر من در پوشه exampleimage هست

behrad110
دوشنبه 01 اسفند 1390, 13:13 عصر
این روش اصلا بهینه نیست چون
1) بار زیادی رو به سرور تحمیل میکنه مخصوصا اگه تعداد عکس ها زیاد باشه و یا بعد از عکس آخر بخواین دوباره عکس اول نمایش داده بشه صفحه هم که احتمالا مرتب رفرش میشه .
2) مدت زمان نمایش هر تصویر معین نشده که احتمالا باید thread رو sleep کنی که زیاد حرفه ای نیست

fakhravari
دوشنبه 01 اسفند 1390, 13:27 عصر
http://barnamenevis.org/showthread.php?317497-%D8%A7%D8%B3%D9%84%D8%A7%DB%8C%D8%AF-%D8%B4%D9%88-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF&highlight=%D8%A7%D8%B3%D9%84%D8%A7%DB%8C%D8%AF+%D8 %B4%D9%88

masud8002k
دوشنبه 01 اسفند 1390, 14:23 عصر
شما چه راه بهتری سراغ دارید؟ممنون میشم شما هم راهنمایی بفرمایید

behrad110
دوشنبه 01 اسفند 1390, 14:35 عصر
برای این کار باید از اسلایدشو اجکس استفاده کرد و یا از update panel و عکس ها رو هم باید تو وب سرویس بگذارید بعد یه تایمر ای جکس رو به برنامه اضافه میکنی که تو هر رویداد تیک یه عکس رو بفرسته چون این کار به صورت asynchronize انجام میشه نه رفرش داریم و نه نیازی به اسکرول کردن هست. من همیشه از این روش استفاده میکنم نه بار اضافی به سرور تحمیل میشه و نه کاربر خیلی منتظر می مونه

fakhravari
دوشنبه 01 اسفند 1390, 15:07 عصر
به هیچ وجع از ابدیت پنل استفاده نکنید و اصلا چرا تایمر ؟؟؟
اینها یه بار اضافی هستند.
داده ها رو 1 با از منبع میخونیم و بعد با دستورات جاوا نمایش میدهیم.
اگر به مثال های اسلاید شو دقت کنید میبینید 1 بار select میشه ولی با جاوا کنترل میشه.
time , next slide ,....

behrad110
دوشنبه 01 اسفند 1390, 15:15 عصر
بدون شرح
|
|
V


به هیچ وجع از ابدیت پنل استفاده نکنید و اصلا چرا تایمر ؟؟؟
اینها یه بار اضافی هستند.
شما کل aspnetajax رو با این حرفت زیر سوال بردی . اون روش تا 5-6 سال پیش استفاده میشد چاره ای هم نبود اما aspnetajax این کار به صورت غیر همزمان انجام میشه و کاربر اصلا متوجه نمیشه عکس داره دانلود میشه
با همون روش که یکبار می خونی اگه 1000 تا عکس داشتی میخوای چی کار کنی ؟
لطفا با راهنمایی اشتباه دوستان رو گمراه نکنید

sara_aryanfar
دوشنبه 01 اسفند 1390, 16:48 عصر
این روش اصلا بهینه نیست چون
1) بار زیادی رو به سرور تحمیل میکنه مخصوصا اگه تعداد عکس ها زیاد باشه و یا بعد از عکس آخر بخواین دوباره عکس اول نمایش داده بشه صفحه هم که احتمالا مرتب رفرش میشه .
2) مدت زمان نمایش هر تصویر معین نشده که احتمالا باید thread رو sleep کنی که زیاد حرفه ای نیست
فکر نمی کنم بار اضافه تحمیل کنه چون یک بار فراخوانی میشه با این روش اطلاعات دیگه هم میشه خوند اما اگه فقط عکس باشه فکر می کنم روش های دیگری بای بایند هست ولی فکر می کنم روش مناسبی هست

behrad110
دوشنبه 01 اسفند 1390, 17:42 عصر
راستش من متوجه نشدم شما گفته من رو تایید کردید یا رد کردید

فکر نمی کنم بار اضافه تحمیل کنه چون یک بار فراخوانی میشه با این روش اطلاعات دیگه هم میشه خوند
چرا فکر نمی کنید؟ :متفکر: شما عکس رو با اطلا عات دیگه مقایسه نکنید جسارتا من اگه جای شما بودم فکرم رو عوض میکردم تو پست قبلی هم عرض کردم اگه تعداد عکسها 1000 تا بود چی همون یکبار دانلودش هم اشک کاربر رو در می آره هزار تا نه 100 تا اصلا بگو 20 تا با این اینترنت ما شالا موشک وار کاملا فرقش مشهود هست
مزیت updatepanel اینه که غیر همزمان تمام این کار ها انجام می شه کاربر کار خودش رو تو صفحه میکنه در پشت صحنه هم بدون پست بک اضافی عکس ها دانلود میشه این یه روش استاندارد هست روش من نیست که بخوام ازش دفاع کنم . حالا کاری نداره شما دو تا روش رو تست کنید ببینید چه اختلاف فاحشی داره. واقعا اختلافش قابل توجهه. تعداد عکس که زیاد بشه واقعا اختلال ایجاد میکنه . چند بار پست بک ؟ چند بار اسکرول؟
یک کار رو به صد روش میشه انجام داد مهم اینه که کدومش بهینه تر . امیدوارمخالف نباشید به هر حال جهت رعایت قوانین انجمن دیگه پست اضافه ای نمی زنم هر دو روش رو امتحان کنید قضاوت با خود دوستان
موفق باشید

sara_aryanfar
دوشنبه 01 اسفند 1390, 17:47 عصر
ما اینجا جمع شدیم تا آموخته هامون رو در اختیار هم بزاریم و من مدیون تمام دوستانی هستم که به من چیزی می آموزن این از این اما اینجا بحث سر اسلایدر هست شما با هر روشی پیش بری مجبور هستی عکس رو یک بارگذاری کنی فکر نکنم روش شما هم این بحث رو عوض کنه اگر با روش شما هم بخواهیم به گفته شما 1000 تا عکس رو بیاریم به همان حجم و سرعت نیاز هست

kingmech
دوشنبه 01 اسفند 1390, 17:49 عصر
من از این روش استفاده میکنم ببنید
select top 3 * from tb
بعد این توی یه dt میریزیم
بعد یه حلقه میزاریم وسطش یه لیترال
اینجوری میکنیم
"literal1.text+= <img herf="aks"i".jpg>
این روش خیلی ساده تر هست

sara_aryanfar
دوشنبه 01 اسفند 1390, 18:05 عصر
فکر کنم اگه نوع i عددی نباشه ارر میده ها در ضمن اگر شما می خواهید سه تا عکس رو بیاری روشی که من اشاره کردم فکر کنم براتون خوبه از اون استفاده کنید موفق باشید

kingmech
دوشنبه 01 اسفند 1390, 18:59 عصر
فکر کنم اگه نوع i عددی نباشه ارر میده ها در ضمن اگر شما می خواهید سه تا عکس رو بیاری روشی که من اشاره کردم فکر کنم براتون خوبه از اون استفاده کنید موفق باشید
این یه مثال بود توی این روش شما بگو 500 عکس فرقی نمیکنه
اونجا هم که aks i هست اصن نیازی نیست بهش :d میشه از

dt.rows[i[adres aks]]

sara_aryanfar
دوشنبه 01 اسفند 1390, 20:46 عصر
ببین دوست عزیز شما وقتی می خوای یک عکس 100 کیلو بایتی رو بیاری تو صفحه با هر روشی بری این عکس حجمش 100 کیلو بایته که مدت مشخصی طول می کشه تا لود بشه حالا هر چند تا عکس باشه زمان خودشو داره روش هایی که من و دوستان گفتن یا خودتون نمیان حجم عکسو کم کنن که ادعا کنیم سرعت لود بالاتر میره

masud8002k
دوشنبه 01 اسفند 1390, 22:26 عصر
ممنون از همه دوستان بابات راهنماتونن و لینک هایی که دادین
متاسفانه با توجه به مبتدی بودنم مشکلم حل نشد چون اون کد اولیه رو گذاشتم تا باتوجه به اون اگر وقت اضافی داشتید یک تغییراتی بدید و بنویسید تا با توجه به اون کار کنم و یاد بگیرم
سطح شما ها بالاتره و من فعلا میخوام با اسلاید شو پروژه دانشگامو تموم کنم که فقط این قسمت مونده (اسلاید شو داینامیک که ارسالش میکنم در خودنش مشکل دارم)
تشکراز همتون

Saman Hashemi
سه شنبه 02 اسفند 1390, 08:23 صبح
به نظر من هر دو روش هم اضافه کاری داره هم بهینه نیست وقتی شما میتونید خیلی ساده یه کار انجام بدید چرا ازین روش های سخت استفاده میکنید...!
این ریپیتر
<div id="slider" class="slider">
<ul>
<asp:Repeater ID="RepeaterDefault" runat="server">
<ItemTemplate>
<li>
<img width="600" height="300" src='<%# Eval("ImgName", "data/images/{0}")%>' alt='<%# Eval("ImgDes") %>' onclick="window.navigate('<%# Eval("ImgPost", "Post.aspx?PostID={0}")%>');return false" onmouseover="this.style.cursor='hand'"/>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
اسلایدر شم esaySlider یه جستجو کنید و نسخه 1.7 دانلود کنید...!
اینم کد jQuery
$(document).ready(function(){
$("#slider").easySlider({
controlsBefore: '<p id="controls">',
controlsAfter: '</p>',
auto: true,
continuous: true
});
فقط یه نکته نیازی نیست 1000تا عکس از بانک واکشی کنید 5تا هم کفایت میکنه...!

masud8002k
سه شنبه 02 اسفند 1390, 10:01 صبح
ممنون من تا اینجاش نوشتم با کد هایی که شما گفتین (کد زیر)همه چی درسته کار میکنه فقط عکس مربوطه رو نمایش نمیده مثلا میاره توصیحات عکس رو و عوض میکنه(مثلا عکس یک-بعدش عکس دو ...)
ولی خود عکس رو نشون نمیده کد من هم به این حالته
<body>
<form id="form1" runat="server">
<div id="container">
<div id="header">
<h1>
Easy Slider jQuery Plugin - continuous demo</h1>
</div>
<div id="content">

<script type="text/javascript">
$(document).ready(function() {
$("#slider").easySlider({
auto: true,
continuous: true
});
});
</script>

<div id="slider">
<ul>
<asp:Repeater ID="RepeaterDefault" runat="server">
<ItemTemplate>
<li>
<img width="600" height="300" src='<%# Eval("name", "images/{0}")%>' alt='<%# Eval("name") %>' />
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
</div>
</div>
</form>
</body>
</html>




دردیتا بیسم هم دو فیلد وجود داره nameوimg
عکس هام هم در پوشه imagesذخیره میشن
کد ریپیتر هم
string cc=System.Configuration.ConfigurationManager.Conne ctionStrings["mn"].ToString();
SqlConnection con = new SqlConnection(cc);
string str = "select * from imgfinal";
SqlCommand cmd = new SqlCommand(str,con);
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
RepeaterDefault.DataSource = sdr;
RepeaterDefault.DataBind();

con.Close();

ممنون از راهنمایی هاتون

Saman Hashemi
سه شنبه 02 اسفند 1390, 11:29 صبح
مسیر عکسها اشتباهه این قسمت ویرایش کن...!

images/{0}