2 ضمیمه
مشکل در بازیابی تصاویر باینری و نمایش در datagridview
با سلام خدمت اساتید گرامی
بنده در پروژه 2تا گرید ویو داریم که تصاویر متناظر با گرید1 در گرید2 ذخیره می شود
در هنگام اجرای پروژه تصاویر در گرید 2 به نمایش در می آید و با کلیک بر روی آنها عکس در PictureBox ظاهر میشه
ولی به محض کلیک روی گرید 1 اطلاعات در گرید2 تغییر می کند اما عکس با مشکل مواجه می شود
لطفا راهنمایی کنید
ضمیمه 112370
ضمیمه 112369
اینم کد استفاده شده
var pp = from p in db.photos
where p.fId == Convert.ToInt32(dataGridView1.CurrentRow.Cells["id"].Value)
select p;
dataGridView2.DataSource = pp;
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
لطفا راهنمایی کنید احتیاج دارم
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
این مشکل من هم است لطفا راهنمایی کنید
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
نقل قول:
نوشته شده توسط
mohammad5593
لطفا راهنمایی کنید احتیاج دارم
اطلاعات رو از دوتا جدول فراخوانی می کنید ؟؟؟؟؟؟؟؟؟؟/
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
بزارید کمی بیشتر توضیح بدم شاید یکی دلش سوخت و کمک کرد
بانک LINQ to SQL
پروژه قراره بخشنامه و ها و تصویر نامه های اداری را داخل خودش ذخیره کنه با قابلیت ذخیره سریع و دسترسی سریع به مطلب مورد نظر. به جای گشتن دنبال یک کاغذ داخل کلی فایل و...
دیتا سورس گرید2 را بایند کردم به جدول عکسها . موقع لود برنامه عکسها را درست نشون میده اما به محض کلیک روی گرید1 با کد نویسی گفتم که عکسهای متناظر را در گرید2 نشون بده عکس ها را نمایش نمیده
دقیقا مشکل در تبدیل Array به Image است.
لطفا راهنمایی کنید . هنگ کردم
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
نقل قول:
نوشته شده توسط
khokhan
اطلاعات رو از دوتا جدول فراخوانی می کنید ؟؟؟؟؟؟؟؟؟؟/
سلام بر استاد خودم
بله از دوتا جدول یکی zirna که اطلاعات را ذخیره میکنه
و یکی دیگه photos که طبق id جدول اول تصاویر را ذخیره میکنه
بیشتر از خواندن عکس باینری و تبدیل آن به image ایراد میگره
لطفا راهنمایی کنید
1 ضمیمه
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
اطلاعات در گرید2 طبق کد زیر برقرار میشه اما ستون عکس با ایراد مواجه میشه
ضمیمه 112392
var pp = from p in db.photos
where p.fId == Convert.ToInt32(dataGridView1.CurrentRow.Cells["id"].Value)
select p;
dataGridView2.DataSource = pp;
2 ضمیمه
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
نقل قول:
نوشته شده توسط
mohammad5593
اطلاعات در گرید2 طبق کد زیر برقرار میشه اما ستون عکس با ایراد مواجه میشه
var pp = from p in db.photos
where p.fId == Convert.ToInt32(dataGridView1.CurrentRow.Cells["id"].Value)
select p;
dataGridView2.DataSource = pp;
.................................................. .................................................. ..:لبخند:
فایل دیتابیس داخل پوشه DB می باشد یه کپی در پوشه debug و یه کپی در پوشهاصلی کنار سایر فایلها قرار دهید و بعد اجرا کنید
ضمیمه 112394
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
سپاس بابت فایل راهنما
حالا لطفا بفرمائید چطوری میشه عکس داخل گرید 2 را با کلیک بر روی هر سطر در یک PictureBox نمایش داد
1 ضمیمه
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
تمام تغییرات را سعی کردم مو به مو در برنامه خودم اجرا کنم اما همه چیز درست انجام میشه الا نمایش عکس در گرید2
در واقع عکس را به صورت یک سلول خالی نشان می دهد.
لطفا راهنمایی کنید
ضمیمه 112399
2 ضمیمه
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
نقل قول:
نوشته شده توسط
mohammad5593
تمام تغییرات را سعی کردم مو به مو در برنامه خودم اجرا کنم اما همه چیز درست انجام میشه الا نمایش عکس در گرید2
در واقع عکس را به صورت یک سلول خالی نشان می دهد.
لطفا راهنمایی کنید
ضمیمه 112399
همه کارات درسته الی "فوت کوزه گری " :لبخند::چشمک:
برروی فیلد عکس در داخل مدل linq واز قسمت پراپرتی ، نوع فیلد رو از Binary (System.Data.Linq.Binary) ، به نوع byte[] (System.Byte[]) تغییر بده
ضمیمه 112403
ضمیمه 112404
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
دست شما درد نکنه داشتم کم کم کل پروژه را به فایل راهنمای شما منتقل می کردم .:افسرده:
نجاتم دادید ممنون از لطف شما:لبخند: واقعا فوت کوزه گری بود:تشویق:
حالا لطفا بفرمائید چطوری میشه با کلیک روی گرید2 عکس مربوطه را توی یک Picturebox نمایش داد. سوال دوستمون shehneh هم همین بود.
1 ضمیمه
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
یک تکست باکس برای جستجو به برنامه اضافه کردم ولی وقتی جستجو انجام شد دیگه با کلیک روی گرید 1 چیزی توی گرید2 نمایش نمیده؟؟؟؟
ضمیمه 112406
اینم کدشه
var db = new DataClasses1DataContext();
var qsearch1 = db.zirnas.Where(c => c.fname.Contains(toolStrip_Search.Text) ||
c.family.Contains(toolStrip_Search.Text));
if (qsearch1.Count() == 0)
{
//MessageBox.Show("Record yaft nashod");
toolStrip_Search.BackColor = Color.Yellow;
toolStrip_Search.ForeColor = Color.OrangeRed;
//toolStrip_Search.Font.Bold = true;
}
else
{
toolStrip_Search.BackColor = Color.GreenYellow;
toolStrip_Search.ForeColor = Color.Black;
dataGridView1.DataSource = qsearch1;
}
if (toolStrip_Search.Text == "")
{
toolStrip_Search.BackColor = Color.White;
}
1 ضمیمه
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
نقل قول:
نوشته شده توسط
mohammad5593
دست شما درد نکنه داشتم کم کم کل پروژه را به فایل راهنمای شما منتقل می کردم .:افسرده:
نجاتم دادید ممنون از لطف شما:لبخند: واقعا فوت کوزه گری بود:تشویق:
حالا لطفا بفرمائید چطوری میشه با کلیک روی گرید2 عکس مربوطه را توی یک Picturebox نمایش داد. سوال دوستمون shehneh هم همین بود.
برای نمایش تصویر ردیف انتخابی از گرید در پیکچر باکس به این نحو عمل گردد :لبخند:
در رویداد SelectionChanged گرید 1 این تغییرات رو اعمال کنید تا یه ستون ردیف توی گرید 2 ایجاد شود :
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
try
{
var q = from dbpic in db.Table1s
where dbpic.c_code.Equals(int.Parse(dataGridView1.Curren tRow.Cells[0].Value.ToString()))
select new
{
d0=dbpic.id,
d1 = dbpic.c_code,
d2 = dbpic.photo
};
dataGridView2.DataSource = q;
}
catch
{
}
}
حالا دذ رویداد CellClick گرید 2 بنویسین :
private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
{
var query = from p in db.Table1s
where p.id.Equals(int.Parse(dataGridView2.CurrentRow.Cel ls[0].Value.ToString()))
select p;
foreach (var s in query)
{
Image bmp = null;
byte[] buf = (byte[])(s.photo).ToArray();
bmp = Image.FromStream(new MemoryStream(buf));
pictureBox1.Image = bmp;
}
}
.................................................. ...:لبخند:
1 ضمیمه
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
دست شما استاد گرامی درد نکنه
لطفا بفر مائید چطوری میشه عکس داخل گرید2 را به صورت Stretch یعنی متناسب با طول و عرض گرید2 سایز عکس کشیده شود
در حال حاضر تصویر به صورت Zoom به نمایش در میاد.
با توجه به اینکه بنده نمی خواهم سایز طول و عرض عکس را فیلتر کنم و کاربر مجاز به درج هرنوع عکسی با هر سایزی در دیتابیس باشه
ضمیمه 112422
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
نقل قول:
نوشته شده توسط
mohammad5593
دست شما استاد گرامی درد نکنه
لطفا بفر مائید چطوری میشه عکس داخل گرید2 را به صورت Stretch یعنی متناسب با طول و عرض گرید2 سایز عکس کشیده شود
در حال حاضر تصویر به صورت Zoom به نمایش در میاد.
با توجه به اینکه بنده نمی خواهم سایز طول و عرض عکس را فیلتر کنم و کاربر مجاز به درج هرنوع عکسی با هر سایزی در دیتابیس باشه
ضمیمه 112422
کارهای زیادی می شه در این زمینه انجام داد از جمله این که ستون مربوط به تصاویر رو هنگام بایند کردن اطلاعات دیز ایبل کنید و یه ستون تصویر از طریق کد نیویسی اضافه کنید و فیلد مربوط به تصاویر رو به این ستون اختصاص دهید :
imageColumn = new DataGridViewImageColumn();
imageColumn.Width = 100;
dataGridView1.Columns.Add(imageColumn);
ویا اینطوری :
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
DataGridViewImageCell cell = (dataGridView1.Rows[e.RowIndex].Cells[2] as DataGridViewImageCell);
Bitmap bmp = (Bitmap) cell.Value;
bmp = (Bitmap) bmp.GetThumbnailImage(200, 300, null, IntPtr.Zero);
dataGridView1.Rows[e.RowIndex].Cells[0].Value = bmp;
}
بعد از طریق این کد می تونید نحوه نمایش تصویر در این ستونی که از طریق کد نویسی ایجاد کرده اید رو ست کنید :
for(int i = 0; i < dataGridView1.Columns.Count; i ++)
if(dataGridView1.Columns[i] is DataGridViewImageColumn) {
((DataGridViewImageColumn)dataGridView1.Columns[i]).ImageLayout = DataGridViewImageCellLayout.Stretch;
break;
}
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
ممنون مثال سومی کارم را راه انداخت. خدا خیرت بده
من یک ستون به جدول اصلی اضافه کردم به نام توضیحات. ولی نمی خواهم توی گریدویو نمایش داده بشه
حالا لطفا بفرمائید چطوری میشه با کلیک بر روی گرید1 محتویات آن فیلد توضیحات طبق سطر انتخاب شده در یک تکست باکس درج بشه:متفکر:
نقل قول: مشکل در بازیابی تصاویر باینری و نمایش در datagridview
نقل قول:
نوشته شده توسط
mohammad5593
ممنون مثال سومی کارم را راه انداخت. خدا خیرت بده
من یک ستون به جدول اصلی اضافه کردم به نام توضیحات. ولی نمی خواهم توی گریدویو نمایش داده بشه
حالا لطفا بفرمائید چطوری میشه با کلیک بر روی گرید1 محتویات آن فیلد توضیحات طبق سطر انتخاب شده در یک تکست باکس درج بشه:متفکر:
کد بایند کردن تکست باکس رو در رویداد CellClick گرید بنویس و آیدی گزینه مورد نظر رو برابر ستون آی دی سطر انتخاب شده قرار بده
اینطوری:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
int ID = int.Parse(dataGridView1.CurrentRow.Cells[0].Value.ToString());
var myquery = from myrow in db.zirnas
where myrow.id==ID
select new { family = myrow.family};
foreach (var valuesFromQuery in myquery)
{
textBox2.Text = valuesFromQuery.family;
}
}