نمایش نتایج 1 تا 7 از 7

نام تاپیک: ایجاد گالری تصویر با DataList

  1. #1
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    کنار دریای کاسپین
    پست
    110

    Question ایجاد گالری تصویر با DataList

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

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,107

    نقل قول: ایجاد گالری تصویر با DataList

    سلام و روز خوش

    پیش از هر چیز پیشنهاد میکنم با توجه به این که تصاویر به صورت باینری در دیتابیس ذخیره شدن،
    از کمپوننت های مناسب این کار استفاده کنین چون مستقیما اجازه bind کردن به دیتا باینری رو به شما میدن؛
    نمونه زیر رو ببینین:

    DevExpress Image Slider - Binding to Binary Data

    در دیتالیست شما باید یک کنترل img در تمپلیت بسازین و این کنترل هم فقط میتونین آدرس تصویر رو بهش بدین و به دیتا باینری بایند نمیشه (تا اونجا که میدونم).
    گذشته از این دیتالیست خیلی خام هست، و برای کارکرد مناسب و شکل ظاهری زیبا باید زمان زیادی صرف کدنویسی (هر دو سمت سرور و کلاینت) و طراحی استایل کنین.

    با این وجود، اگر هدف آموزش و یادگیری هست روش کار رو در پست های بعدی توضیح میدم (دست کم یکی از روشهای ممکن).

  3. #3
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,107

    Binding asp.net datalist image to binary data from database

    بهتره مسئله رو به بخش های کوچکتر تقسیم و یکی یکی اونها رو حل کنیم.

    اول باید یک روتین بنویسیم که تصویر رو از دیتابیس بخونه و اون رو به شکل یک url در بیاره تا بتونیم source در کنترل image ازش استفاده کنیم.

    مشابه این روتین رو قبلا در تاپیک زیر آوردم (پست شماره 8):

    create captcha text and save in session, captcha image as stream in C sharp

    در این روش یک page میسازیم که content اون رو از نوع image تعریف میکنیم و محتوای تصویر رو بصورت یک استریم در اون مینویسیم.

    روش همین هست با این تفاوت که اونجا تصویر بصورت رندوم در حافظه ساخته میشد، و اینجا نیاز هست یک تصویر معین بر اساس یک ID از دیتابیس خونده بشه.

    فرض میکنیم تصاویر در یک جدول (Pictures) با فیلدهای ID, Description, PictureData ذخیره شدن.
    این ID رو در querystring به صفحه میفرستیم و در page load کد زیر رو مینویسیم:
    response.contenttype= "image/png"

    DIM id AS LONG= request.querystring("ID")
    USING conn AS SQLCONNECTION= new SQLCONNECTION(your connection string)
    conn.open()
    USING comm AS NEW SQLCOMMAND("SELECT PictureData FROM Pictures WHERE ID=@ID" , conn)
    comm.parameters.add("@ID" , sqldbtype.int).value= id
    USING rdr AS SQLDATAREADER= comm.executereader
    rdr.read
    DIM image AS BYTE()= rdr("PictureData")
    response.outputstream.write(image , 0 , image.length)
    END USING
    END USING
    END USING


    حالا اگر این صفحه رو فرضا به اسم GetImage.aspx ذخیره کرده باشیم، برای گرفتن تصویر با ID به شماره 123 کافی هست آدرس زیر رو وارد کنیم:
    GetImage.aspx?ID=123
    آخرین ویرایش به وسیله mazoolagh : چهارشنبه 08 شهریور 1402 در 10:26 صبح

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,107

    Binding asp.net datalist image to binary data from database

    در itemtemplate دیتالیست یک htmlcontrol از نوع img اضافه میکنیم.
    حالا کافی هست آدرسی رو که برای گرفتن تصویر داریم به عنوان src این کنترل معرفی کنیم.

    چون دیتالیست به یک sqldatasource بایند شده، به ID دسترسی داریم: Eval("ID")
    پس کنترل img رو به شکل زیر مینویسیم:
    <img src='<%# "GetImage.aspx?ID=" & Eval("ID") %>' />

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,107

    Binding asp.net datalist image to binary data from database

    البته میتونیم به جای html control از کنترل سمت سرور هم استفاده کنیم:
    <asp:image id="image" runat="server" imageurl='<%# "~/GetImage.aspx?ID=" & Eval("ID") %>'  />


    اما تا زمانی که واقعا نیازی به رخدادها یا پراپرتی های سمت سرور نداشته باشیم توجیهی نداره.

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,107

    Binding asp.net datalist image to binary data from database

    بخش آخر این بود که با کلیک روی عکس یک صفحه جدید باز بشه.
    فرض کنیم یک صفه دیگه داریم به اسم ProductDetails.aspx که با گرفتن ID در querystring مشخصات محصولی که روی عکسش کلیک شده رو نمایش میده.

    اول یک script مینویسیم که با گرفتن ID این صفحه رو باز کنه:
    <script>
    function ShowDetails(ID) {
    window.open('ProductDetails.aspx?ID=' + ID);
    }
    </script>


    و شکل نهایی کنترل img به صورت زیر خواهد بود:
    <img src='<%# "GetImage.aspx?ID=" & Eval("ID") %>' onclick='ShowDetails(<%#Eval("ID") %>)' />


    همین!

  7. #7
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    کنار دریای کاسپین
    پست
    110

    نقل قول: Binding asp.net datalist image to binary data from database

    سلام.بسیار هم عالی
    مشکل حل شد

تاپیک های مشابه

  1. کم کردن حجم و اندازه تصویر در DataList
    نوشته شده توسط Site Admin در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: جمعه 17 مهر 1394, 16:48 عصر
  2. سوال: شکل خالی تصویر در datalist
    نوشته شده توسط sajad_boj71 در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: یک شنبه 21 اردیبهشت 1393, 22:36 عصر
  3. پاسخ: 2
    آخرین پست: چهارشنبه 18 مرداد 1391, 01:13 صبح
  4. تغییر ادرس یک تصویر در datalist
    نوشته شده توسط pedram_ns در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: پنج شنبه 10 آذر 1390, 15:17 عصر
  5. سوال: لود تصویر موجود در db در datalist
    نوشته شده توسط Arian7 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 04 خرداد 1389, 15:52 عصر

قوانین ایجاد تاپیک در تالار

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