PDA

View Full Version : سوال: نمایش عکس از نوع varbinary در gridview



tthenry14plus
جمعه 24 تیر 1390, 15:33 عصر
من توی یک دیتابیس داده ای از نوع varbinary(MAX) گرفتم و اون رو با عکس مورد نظر خودم پر کردم، حالا میخوام وقتی gridview رو پر میکنم توی فیلد عکس، تصویر اون عکس نمایش داده بشه، سرچ های مختلفی انجام دادم اما شاید بخاطر اینکه تازه ASP رو شروع کردم دقیقا منظورشون رو نمیفهمم...
مثلا یک نگاه به این لینک بندازید: http://forums.asp.net/t/1448293.aspx/1/10

ممنون میشم سریعتر پاسخ بدید...

hosseinrahmatei
جمعه 24 تیر 1390, 21:53 عصر
دوست عزیز شما باید برای این کار مقدار فیلد مربوطه (همون عکس ) در یک متغییر از نوع بایت ذخیره می کنید و توسط متد response.binerywrite چاپ کنی
حالا اگه شما بخواهید اون عکس ها رو در گرید ویو نمایش دهید باید img را که در گرید ویو ایجاد کردید خصوصیت src را برابر یک http handler قرار میدهیم و id رکوردمان(
src=eval("id","./Handler.ashx?id={0}") را به http handdler پاس می دهیم و سپس در http hander کار را که در بالا گفتم(خط اول) را انجام می دهی
تو همون لینکی که خودتون گذاشتی کاملا توضیح داده بود که کد زیر در اون بود(بخش هایی که Bold است بخش اصلی کد است ).

<%@ WebHandler Language="VB" Class="Handler" %>

Imports System
Imports System.Web
Imports System.Configuration.ConnectionStringSettingsColle ction
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlClient.SqlCommand
Imports System.Collections.Specialized

Public Class Handler : Implements IHttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim con As New SqlConnection()
con.ConnectionString = ConfigurationManager.ConnectionStrings("soccerConnectionString").ConnectionString

' Create SQL Command

Dim cmd As New SqlCommand()
cmd.CommandText = "SELECT [MIMEType], [Kit] FROM KIT" + " WHERE Kit_Id = @Kit_Id"
cmd.CommandType = System.Data.CommandType.Text
cmd.Connection = con

Dim ImageID As New SqlParameter("@Kit_Id", System.Data.SqlDbType.Int)
ImageID.Value = context.Request.QueryString("Kit_Id")
cmd.Parameters.Add(ImageID)
con.Open()
Dim dReader As SqlDataReader = cmd.ExecuteReader()
dReader.Read()
context.Response.BinaryWrite((DirectCast(dReader("Kit"), Byte())))
dReader.Close()
con.Close()

End Sub

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property

End Class

tthenry14plus
شنبه 25 تیر 1390, 19:22 عصر
مرسی دوست عزیز، من منظورم رو اشتباه رسوندم، منظورش رو میفهمم ولی نمیدونم چرا کار نمیکنه، تمام اینکارها رو دیروز انجام دادم ولی جواب نمیده،
context.Response.BinaryWrite(buff) هم کردم ولی....
من از linq برای کانکت به دیتا بیس و غیره استفاده میکنم...