• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

نمایش چند عکس از پایگاه داده و به طور تصادفی

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
سلام،

من صفحات ASP.NET با VB.NET دارم.

چجوری میتونم کاری بکنم که چند تا عکس با تعداد متفاوت (یعنی تعداد عکسهایی که نمایش داده خواهند شد ثابت نباشه) از پایگاه بگیرم و به طور تصادفی نشون بدم؟

من فعلا این کار رو با جاوا اسکریپت کردم اما بدیش اینه که تعداد عکسها همیشه ثابته من میخوام تعدادش رو هم از طریق code behind کنترل کنم.

با تشکر از دوستان
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
یه عدد تصادفی با استفاده از تابع random درست کن مثل rndnum
بعد یه query بفرست
کد:
strsql = "select top " & rndnum & " picname from table order by NEWID"
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
ممنون از پاسخ شما،

اگه با روشی که فرمودید عکسها رو بگیریم بلوکهای انتخابی تداخل زیادی خواهند داشت یعنی احتمال تکرار زیاده. من این کار رو با رندوم بر روی فیلد ID و حذف تکرارها انجام دادم.

منظور من این بود که میخوام کاری بکنم که مثلا اگر در قسمت کوئری 4 تا عکس به صورت رندوم از پایگاه گرفتم تو html صفحه هم 4 تا عکس ایجاد بشه، اگر فقط یک عکس انتخاب کردم در html هم فقط یک تگ عکس ایجاد بشه. این یک.
دوم هم این که چجوری اینا رو به صورت تصادفی نشون بدم؟ تنها راهش همون جاوااسکریپت هست؟

با تشکر
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
من دقیق متوجه نشدم شما چه کاری میخوای انجام بدی

اما وقتی دیتاسورس میدی به یه دیتا کنترل تو دات نت؛ خوب خودش به اندازه تعداد رکورد ها برات سطر میسازه دیگه، نمیخواد تعداد بدی..
در کل یک مثال واقعی بزنید ببینم چه کاری میخواهید انجام بدید :دی
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
قسمت پیشخوان مطبوعات (سمت چپ) این سایت رو ببینید: http://www.rajanews.com
من الان همین کار رو کردم ولی تعداد عکسها ثابت هست یعنی از همون اول تعیین کردم که ما کلا میتونیم مثلا 5 تا عکس توی این قسمت نشون بدیم. فقط توی پنل سایت جایی گذاشتم که این 5 تا عکس رو بشه عوض کرد. من میخوام این 5 تا عکس هم بشه از پنل تغییر داد.
البته این کار رو میشه با آژاکس انجام داد ولی اونم مشکلش اینه که هر بار که عکس جدیدی می خواد لود بشه و کاربر در قسمت پایین صفحه است، اون رو به روی عکس فوکوس میکنه و کاربر دوباره باید به قسمت پایین سایت اسکرول کنه!

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
SetNextImage()
End Sub

Private Sub SetNextImage()
Dim path As String = Server.MapPath(\\\"~/Image/\\\")
Dim files As String() = IO.Directory.GetFiles(path)
Dim r As New Random
Dim fi As New IO.FileInfo(files(r.Next(0, files.Length)))
img.ImageUrl = \\\"~/Image/\\\" + fi.Name
End Sub
 
Last edited:

ali.kolahdoozan

Registered User
تاریخ عضویت
13 فوریه 2007
نوشته‌ها
935
لایک‌ها
70
سن
42
محل سکونت
کف شهر
در javascript یک تابع هست به نام settimeout و برای random هم تابع داره . شما همه عکسهات رو بیار پشت صفحت مثلا توی یک Div بزار و فقط Display یکی یا چند تا رو '' بزار بعد با همین 2 تا تابع باز بعدیها رو در فواصل زمانی خاص که با settimeout درست میشه و برای random بودن هم که گفتم تابع داره . آنها که در حال نمایش هستن رو از نمایش در بیار و بعدیها رو که تابعها بهت دادن نمایش بده . نیازی هم به ajax نیست . در صورت استفاده از ajax باید هی بری سر وقت server که لزومی نداره



میتونی حتی عکسها رو همه رو load هم نکینی با javascript دستت به عکسهای مثلا در فلان folder روئ هاست میرسه . بردار و نمایش بده بر اساس جواب تابعها از نام و کد عکسها یک آرایه بساز و درفواصل زمانی خاص و راندوم نمایش بده
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
خوب حالا یه جورایی روشن شد چه کاری میخوای بکنی

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

در سمت کلاینت همونجور که مقداری، دوستمون هم اشاره کردند، شما مثلا در بلاک های مشخص html عکس ها رو مینویسید، بعد خود اسکریپت این ها رو به صورتی که مشخص کردید میاره
مثلا:
کد:
<ul id="jqscroll">
<li><img src="pic1"></li>
<li><img src="pic2"></li>
<li><img src="pic3"></li>
</ul>

و شما این بلاک رو میتونین از سمت سرور با یه ریپیتر یا اضافه کردن اون به asp:literal ، ایجاد کنید
بستگی داره به مدل jquery که استفاده میکنید

اینجا رو یه نگاه بنداز
http://www.malsup.com/jquery/cycle/
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
خیلی ممنون از آقایون، مشکل حل شد.
 
بالا