السلام عليكــم ورحمـة الله وبركاتــه ،،
بحثت في موقع codeproject عن طريقة لعرض صورة موجودة في قاعدة بيانات في داتا جريد و وجدت هذه الطريقة التي تعمل معي بكفاءة:
1-أضف أداة داتا جريد الى الصفحة
2-أضف للمشروع ملف من نوع Generic Handler
3-قم بعمل bound للداتا جريد و ذلك بربطها بالجدول الذي به الحقل الخاص بالصور
4-ستظهر جميع حقول الجدول مع عدا حقل الصورة
5-أضف للداتا جريد عمود من نوع Imagefield ثم قم بتعيين خاصية DataImageUrlField الى اسم حقل الصورة
6-قم بتحويل هذا العمود الى TemplatedField
7-في ملف Generic Handler قم بكتابة هذا الكود تحت الحدث public void ProcessRequest (HttpContext context):
SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=In_The_Net;Integrated Security=True");
string sql = "Select Picture from Images where ID=@ImageId";
SqlCommand cmd = new SqlCommand(sql, myConnection);
myConnection.Open();
cmd.Parameters.Add("@ImageId", SqlDbType.Int);
cmd.Parameters[0].Value = Convert.ToInt32(context.Request.QueryString["ID"]);
cmd.Prepare();
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
context.Response.ContentType = "jpeg";
context.Response.BinaryWrite((byte[])dr["Picture"]);
}
myConnection.Close();
8-للأمانة انا لا أفهم السطور الأخيرة من الكود و لا افهم ما هي وظيفة ملف Generic Handler!!! و لكن رغم ذلك فهو يعمل معي بكفاءة
9-في كود HTML الخاص بالداتاجريد اكتب هذا السطر في التاج الخاصة بعمود الصور الذي اضفناه للداتاجريد:
ImageUrl='<%# "Handler.ashx?id=" + Eval("ID") %>'
لاحظ علامات الترقيم الصغيرة و لاتغفل كتابتها
10-سيكون شكل كود HTML الخاص بهذا العمود كالآتي:
<ItemTemplate>
<asp:Image ID="Image1" Width ="90px" Height="70px" runat="server" ImageUrl='<%# "Handler.ashx?id=" + Eval("ID") %>' />
</ItemTemplate>
اتمنى ان اكون قد أفدتكم.......


