تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] عرض الصورة في الداتاغرايد فيو مع تقنية Dapper
#1
   
السلام عليكم ورحمة الله وبركاته
اخوتي الاكارم لكم كل الشكر والعرفان سلفا
استخدم تقنية Dapper في حلب البيانات من الجدول ويتم العرض في الداتا غرايد فيو واحد الحقول هو صورة وقد جعلت حقله في الكلاس من نوع Object هكذا
كود :
public object PHOTO { get; set; }


المشكلة :
الان يتم عرض البيانات في الداتا غرايد عدا الصورة .... وانا اريد ان يتم اظهار الصورة في الحقل المسمى  Photo

بالنسبة للعرض من الداتا غرايد الى مربعات النصوص ومربع الصورة لامشكلة في ذلك وهذه هي الاكواد المستخدمة

كود :
private void Form1_Load(object sender, EventArgs e)
       {
           LoadData();
       }
       // تحميل الداتا
       void LoadData()
       {
           List<Cls_BIANKA> LstBIANKA = Cn.Query<Cls_BIANKA>("Select * From BIANKA").ToList();
           BS.DataSource = LstBIANKA;
           Dgv_Data.DataSource = BS;
         
       }
       // عرض الداتا من الداتا غرايد الى مربعات النصوص والصورة
       private void Dgv_Data_CellEnter(object sender, DataGridViewCellEventArgs e)
       {
           try
           {
               Pb_PHOTO.Image = null;
               Txt_ID.Text = Dgv_Data.CurrentRow.Cells[0].Value.ToString();
               Txt_NAME.Text = Dgv_Data.CurrentRow.Cells[1].Value.ToString();
               Txt_ADRESS.Text = Dgv_Data.CurrentRow.Cells[2].Value.ToString();
               Dtp_BDAY.Value = Convert.ToDateTime(Dgv_Data.CurrentRow.Cells[3].Value);
               byte[] Picture4 = (byte[])(Dgv_Data.CurrentRow.Cells[4].Value);
               MemoryStream ms4 = new MemoryStream(Picture4);
               Pb_PHOTO.Image = Image.FromStream(ms4);
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }


       }
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: asemshahen5
#2
لم اجربه فعلا لانه تنقصني كل التفاصيل ولكن هل جربت تحويل مصفوفة البايتات الى صور قبل اسنادها الى الداتا جريد فيو ؟ 

كود :
    void LoadData()
      {
       List<Cls_BIANKA> LstBIANKA = Cn.Query<Cls_BIANKA>("Select * From BIANKA").ToList();
       
       foreach(Cls_BIANKA x in LstBIANKA)
           {
               x.PHOTO = Image.FromStream(new MemoryStream(x.PHOTO));
           }    
       
       BS.DataSource = LstBIANKA;
       Dgv_Data.DataSource = BS;
      }
الرد
تم الشكر بواسطة: ابراهيم ايبو , Rabeea Qbaha , Rabeea Qbaha , asemshahen5
#3
السلام عليكم ورحمة الله وبركاته
بارك الله بك اخي انس على ردك ومساعدتك في ايجاد حل
اخي فكرت بنفس الفكرة لكن لم ينجح معي الامر ... والكود الذي اوردته في ردك اعطى خط احمر ولم يقبل
بالعادة يكون حقل الصورة في الجدول من نوع Image وعند استخدامنا تقنية ADO.net يتم انشاء العمود الذي يحوي الصورة في الداتاعرايد من نوع Image بشكل اتوماتيكي
لكن المشكلة في تقنية Dapper  اعتقد والله اعلم كون البروبرتي للصورة جعلته من نوع object بسبب انه لم يقبل نوع Image لذلك لن يتم عرض الصورة في الداتاغرايد لانها Object وليست Image
فإذا تمكننا من جعل نوع الداتاتايب للبروبرتي  يقبل image اظن ان المشكلة تحل (هذا مجرد رأي ) حاولت ان اجد مثالا فيه صورة في الانترنت لكني لم اوفق 
عل احد الاخوة الاكارم يدلي لنا بحل 
شكرا لك مرة اخرى ... دمت بخير
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: asemshahen5
#4
نوع بيانات الصوره هو byte[]
كود :
public byte[] PHOTO { get; set; }

اضف شرط عدم وجود صوره
كود :
if (Dgv_Data.CurrentRow.Cells[4].Value != null) {
   byte[] Picture4 = (byte[])(Dgv_Data.CurrentRow.Cells[4].Value);
   MemoryStream ms4 = new MemoryStream(Picture4);
   Pb_PHOTO.Image = Image.FromStream(ms4);
} else { Pb_PHOTO.Image = null; }
الرد
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#5
السلام عليكم ورحمة الله وبركاته
الاخ الكريم mir2 شكرا لك على مساهمتك ولكني انا اريد اظهار الصورة في عمود الداتا غرايد وليس مربع الصورة 
اظهار الصورة في مربع الصورة عند النقر على احد صفوف الداتاغرايد لامشكلة فيه
الحمد تم الحل واظهار الصورة بالرغم من عدم تعديل حرف واحد من الكود 
كل مافعلته الغاء ربط الداتاغرايد مع الكلاس ثم اعادة ربطه وتم اظهار الصورة في عمود الصورة (الامر غريب)
شكرا لكل من ساهم وحاول الاجابة 
هذه صورة للداتا غرايد


الملفات المرفقة صورة/صور
   
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: mir2 , mir2
#6
انا اشرت لك الى نوع بيانات الصوره هو byte[]

الربط الاول اخذ انواع البيانات الاولى ولا يلتفت الى تعديلات الكلاس بعد الربط الاول

لهذا بعد ان الغيت الربط واعدت الربط هنا اخذ الداتاغرايد انواع البيانات من جديد

ما نوع بيانات الصوره بعد ان اعدت الربط ؟

بالنسبه لاظهار الصوره في مربع الصوره فهو سليم من البدايه فقط نبهت الى وضع شرط في حال لم تكن هناك صوره لاحد السجلات

كاضافه لتحسين مظهر
يمكن وضع هذا الكود بعد Dgv_Data.DataSource
كود :
Dgv_Data.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
Dgv_Data.RowTemplate.Height = 44;
((DataGridViewImageColumn)Dgv_Data.Columns[4]).ImageLayout = DataGridViewImageCellLayout.Zoom;
((DataGridViewImageColumn)Dgv_Data.Columns[4]).DefaultCellStyle.NullValue = new Bitmap(1, 1);

بامكانك ربط الداتاغرايد بالكلاس Cls_BIANKA اثناء التصميم فتظهر الاعمده تلقائيا وتجري عليها التعديلات التي وضعتها لك لتحسين المظهر بدون الحاجه للكود

اذا اردت الطريقه اخبرني
الرد
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو
#7
السلام عليكم ورحمة الله وبركاته
اخي الكريم  mir2  نوع بيانات الحقل photo في الكلاس ابقيته كما هو object ولم اغيره ولم اغير شيئا سوى الغاء واعادة الربط
اما مظهر الداتاغرايد وتجميلها فهذه من الامور المعروفة لدي 
اسعدتني بمشاركتك دمت بخير
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: mir2 , mir2 , asemshahen5
#8
وعليكم السلام ورحمة الله وبركاته

انا السعيد بفرصة مشاركة خبير مثلكم

تحياتي لكم
الرد
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Thumbs Up [C#.NET] كيف أحفظ الصورة في مسار وربطه بقاعدة البيانات Sqlserverثم إعادة قرائته مرة اخرى محمد جمعه 1 581 29-10-19, 01:16 PM
آخر رد: asemshahen5
  هل من طريقة لعرض الصورة من listView issamsaidd 15 1,458 16-09-19, 09:18 AM
آخر رد: issamsaidd
  تدوير الصورة maha rajab 5 810 17-06-19, 10:29 PM
آخر رد: ابراهيم ايبو
  [C#.NET] [تم الحل] كود حفظ الصورة يتعامل بازدواجية في الحفظ ابراهيم ايبو 5 989 03-04-19, 11:36 PM
آخر رد: ابراهيم ايبو
  سؤال عن كيفية تحديد قيمة عمود في السطر المحدد في datagrid مع تقنية wpf younass 8 1,526 27-08-18, 11:10 PM
آخر رد: elgokr
  كيف يتم وضع خطوط بين {} بلوك للتميز بين بوك و اخر كما في الصورة younass 2 925 22-08-18, 08:34 PM
آخر رد: younass
  المساعدة في معنى رسالة الخطأ هذه عند التعديل حسب الصورة المرفقة وادي العوضي 6 1,627 26-04-17, 12:34 AM
آخر رد: وادي العوضي
  [سؤال] عرض الصورة في التقرير ابورمزي 2 1,116 06-12-16, 05:01 PM
آخر رد: ابورمزي
  كود قص الصورة proff2016 0 907 31-08-16, 04:43 PM
آخر رد: proff2016
Video [سؤال] كيفية التعامل مع نوع الصورة png abdala 8 2,081 09-09-14, 12:49 PM
آخر رد: abdala

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم