نمایش عکس ذخیره شده در پایگاه داده از طریق دیتاگرید

N.NK

عضو جدید
سلام به همگی

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

خیلی خیلی ممنون میشم راهنماییم کنید،اینم کدشه:
کد:
[LEFT] private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
        {
           int  i = dataGridView1.CurrentRow.Index;
         
  2//       byte[] arr = (byte[])dataGridView1[i, 3];
           FileStream fs = File.Create("C:\\pict.jpg", arr.Length);
            fs.Write(arr, 0, arr.Length);
           fs.Close();
           pictureBox1.Image = Image.FromFile("C:\\pict.jpg");
[/LEFT]
}​

اینم ارورشه:(از خط2)

کد:
[LEFT]Error    2    Cannot convert type 'System.Windows.Forms.DataGridViewCell' to 'byte[]' [/LEFT]
 

taghtagh

عضو جدید
ببین value نداره یعنی نمیشه بنویسی :
(byte[]) ((dataGridView1[i, 3]).value )
 

taghtagh

عضو جدید
مرسی ولی بازم اررور داد میگه:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
خب شما اول بگو چرا تو این رویداد گرید کدت رو نوشتی ؟ میخوای برات چیکار کنه ؟
بعد هم ما معمولا یه جور دیگه این کارو انجام میدیم ، شما بگو دقیقا میخوای چیکار کنی ؟ با انتخاب یک سطر از گرید ، اطلاعات اون رو که شامل یک عکس هم هست یه جای دیگه ، مثلا بالای گرید ، نشون بدی ؟
 

N.NK

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

HH2BN1990

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



کد:
[LEFT]pictureBox1.Image = Image.FromStream(new MemoryStream((byte[])dataGridView1[i,j].Value));[/LEFT]
 
آخرین ویرایش:

N.NK

عضو جدید
Type ستون مربوط به عکس رو تو GridView چی گرفتی ؟
اگه از نوع DataGridViewImageColumn گرفته باشی می تونی اینجوری استفاده کنی !

کد:
[LEFT]pictureBox1.Image = (dataGridView1[i, j].Value as DataGridViewImageColumn).Image;[/LEFT]
نوعشو باینری گرفتم
 

N.NK

عضو جدید
نوعشو باینری گرفتم ولی همچین نوعی که شما گفتین که تو نوعهای دیتابیس تعریف نشده!
نوعشو باینری گرفتم ولی همچین نوعی که شما گفتین که تو نوعهای دیتابیس تعریف نشده!
 

N.NK

عضو جدید
از هر دوی شما عزیزان ممنونم،اینطوری حلش کردم که:
1-نوع داده عکس رو تو گرید imageگرفتم
2- برای نمایش در پیکچرباکس هم از این کد استفاده کردم:
http://www.iran-eng.com/member.php/235277-HH2BN1990 MemoryStream ms = new MemoryStream((byte[])dataGridView1[2, dataGridView1.SelectedRows[0].Index].Value);
pictureBox1.Image = Image.FromStream(ms);
 

Similar threads

بالا