PDA

برای دیدن نسخه كامل اینجا را كلیك كنید : نمایش عکس ذخیره شده در پایگاه داده از طریق دیتاگرید



N.NK
2011/12/23, 11:35 PM
سلام به همگی

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

خیلی خیلی ممنون میشم راهنماییم کنید،اینم کدشه:

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");




}

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



Error 2 Cannot convert type 'System.Windows.Forms.DataGridViewCell' to 'byte[]'

taghtagh
2011/12/24, 09:48 PM
ببین value نداره یعنی نمیشه بنویسی :
(byte[]) ((dataGridView1[i, 3]).value )

N.NK
2011/12/24, 09:56 PM
ببین value نداره یعنی نمیشه بنویسی :
(byte[]) ((dataGridView1[i, 3]).value )


مرسی ولی بازم اررور داد میگه:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

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

N.NK
2011/12/24, 10:10 PM
خب شما اول بگو چرا تو این رویداد گرید کدت رو نوشتی ؟ میخوای برات چیکار کنه ؟
بعد هم ما معمولا یه جور دیگه این کارو انجام میدیم ، شما بگو دقیقا میخوای چیکار کنی ؟ با انتخاب یک سطر از گرید ، اطلاعات اون رو که شامل یک عکس هم هست یه جای دیگه ، مثلا بالای گرید ، نشون بدی ؟
نه!گفتم که میخوام با انتخاب هر سطر از گرید تصویر اون سطر بره تو پیکچر باکس.تو رویداد موس کلیک هم نوشتم همون اررور داد.این رویداد رو از جزوه ی استادم دیدم.

HH2BN1990
2011/12/25, 09:12 PM
نه!گفتم که میخوام با انتخاب هر سطر از گرید تصویر اون سطر بره تو پیکچر باکس.تو رویداد موس کلیک هم نوشتم همون اررور داد.این رویداد رو از جزوه ی استادم دیدم.





pictureBox1.Image = Image.FromStream(new MemoryStream((byte[])dataGridView1[i,j].Value));

N.NK
2011/12/25, 09:38 PM
Type ستون مربوط به عکس رو تو GridView چی گرفتی ؟
اگه از نوع DataGridViewImageColumn گرفته باشی می تونی اینجوری استفاده کنی !



pictureBox1.Image = (dataGridView1[i, j].Value as DataGridViewImageColumn).Image;




نوعشو باینری گرفتم

N.NK
2011/12/25, 09:44 PM
نوعشو باینری گرفتم ولی همچین نوعی که شما گفتین که تو نوعهای دیتابیس تعریف نشده!
نوعشو باینری گرفتم ولی همچین نوعی که شما گفتین که تو نوعهای دیتابیس تعریف نشده!

HH2BN1990
2011/12/25, 09:45 PM
نوعشو باینری گرفتم ولی همچین نوعی که شما گفتین که تو نوعهای دیتابیس تعریف نشده!
من نوع رو تو دیتابیس نگفتم ! تو GridView گفتم !

taghtagh
2011/12/25, 09:46 PM
77635

اینو نیگا کن ببین چیزیه که میخوای ؟ :)

N.NK
2011/12/25, 11:12 PM
از هر دوی شما عزیزان ممنونم،اینطوری حلش کردم که:
1-نوع داده عکس رو تو گرید imageگرفتم
2- برای نمایش در پیکچرباکس هم از این کد استفاده کردم:


MemoryStream ms = new MemoryStream((byte[])dataGridView1[2, dataGridView1.SelectedRows[0].Index].Value);
pictureBox1.Image = Image.FromStream(ms);