سلام به همگی
من میخام توی گرید ویویی که اطلاعات را از بانک میگیره یه ستونش مثلا بجای 0 یه عکس نشون بده و بجای 1 یه عکس دیگه کسی هست کمکم کنه؟
ممنون
سلام به همگی
من میخام توی گرید ویویی که اطلاعات را از بانک میگیره یه ستونش مثلا بجای 0 یه عکس نشون بده و بجای 1 یه عکس دیگه کسی هست کمکم کنه؟
ممنون
ابتدا ستونت رو از نوع DataGridViewImageColumn قرار بده، حالا بیا داخل سازنده فرم این کد رو بنویس:(توضیحشم کامنت کردم)
/// برای اینکه ستون تصویرت، در صورتیکه هیچ تصویری بهش ندادی، تصویر ضربدر که پیش فرض هست رو نشون نده
((DataGridViewImageColumn)this.DataGridView1.Colum ns["اسم یا اندیس ستونت"]).DefaultCellStyle.NullValue = null;
حالا اصل کاری یعنی نمایش تصویر رو هر جایی که خودت خواستی بذار:
if (0)
{
DataGridViewImageCell imageCell = DataGridView1.Rows[i].Cells[اندیس ستون] as DataGridViewImageCell;
imageCell.Value = (Image)مسیر فایلت، حالا میتونی تصویر رو داخل ریسورس ها بذاریش;
}
else
{
DataGridViewImageCell imageCell = DataGridView1.Rows[i].Cells[اندیس ستون] as DataGridViewImageCell;
imageCell.Value = (Image)مسیر فایلت، حالا میتونی تصویر رو داخل ریسورس ها بذاریش;
}
سلام
ممنون از راهنماییتون
منظورت از i چیه؟
کجا تعریف شده یا کجا تعریفش کنم؟
DataGridView1.Rows[i]
من اومدم توی یک تابع نوشتمش
private void read_type()
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Columns[3].ValueType.Equals('0'))
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[3] as DataGridViewImageCell;
imageCell.Value = imageList1.Images[0];
}
else
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[3] as DataGridViewImageCell;
imageCell.Value = imageList1.Images[1];
}
}
}
بعد توی رویداد load فرم اینجوری نوشتم ولی اجرا نمی کنه و خطای not refrence object میده
active(@"SELECT KodPersonel AS[کد پرسنلی], Name_Per AS[نام], Family_Per AS[فامیلی], Vaziat AS[وضعیت]
FROM tbl_info_personel");
read_type();
شرطتون اشتباهه باید اینجوری شرط رو چک کنین:
اما پیشنهاد میکنم که این مقادیر رو داخل یک لیست یا دیتاتیبل قرار بدین و چک کنین، منظورم مقدار ستون سوم هر سطر هستش. این روش هم کار میکنه مشکلی نیسif(dgv.rows[i].cells[3].value.tostring() == "0")
{}
else
{}
باسلام
من کد زیر را که با کمک دوستمون mr.sirwan نوشتم درویژوال 2012 جواب میده ولی در ویژوال 2015 جواب نمیده مشکل از چی میتونه باشه؟؟
کد:
private void read_type()
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[15].Value.ToString() == "0")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Shape63;
}
else if (dataGridView1.Rows[i].Cells[15].Value.ToString() == "1")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Check_01;
}
else if(dataGridView1.Rows[i].Cells[15].Value.ToString()== "2")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Cancel;
}
}
}
سلام
مشکل چیه؟ مورد انتظار کار نمیکنه؟ ارور میده؟ یا .... لطفا بیشتر توضیح بدین
توی ستون عکسی که درست کردم عکس مورد نظر را نشون نمیده همون ضربدر قرمز پیش فرض را نشون میده
احیانا توی جدولتون جای ستون هارو عوض نکردین؟ حالا توی دیتابیس یا دیتاست و....
چون این مشکل به نسخه ویژوال برنمیگرده
شمارش فیلدهام از بانک اطلاعاتی (شروع از صفر) اون فیلد مورد نظرم 13میشه.
ولی در دیتا گریدمم دوتا ستون اول را از نوع عکس گذاشتم که میشه در واقع همون فیلد مورد نظرم میشه سلول 15.کد بالا را هم بنظر میرسه درست باشه ولی عکس را نمیاره.....
بعد از شطرها اومدم یک مسیج باکس گذاشتم بشکل زیر
MessageBox.Show(dataGridView1.Rows[i] + "-" + dataGridView1.Rows[i].Cells[2].Value.ToString());
کدهای تابع تا مسیج باکس هست کار میکنه مثل عکس زیر ولی بعد از اتمام آخرین سطر دیتا گرید، همشون پاک میشند و عکس ضربدر قرمز پیش فرض نشون داده میشه...دیونه ام کرده
3333333.png
آخرین ویرایش به وسیله حسین.کاظمی : جمعه 06 اسفند 1395 در 13:49 عصر
پس کد ست کردن تصویر درست کار میکنه، کداتون رو دقیقا بعد از اتمام این عملیات بذارین تا بهتر راهنمایی کنیم
ویرایش 1:
موقعی که با تیم ویور وصل شدم و کداتونو نگاه انداختم، یادمه یه جا dgv.columns.clear یا rows.clear یا یه همچین چیزی رو فراخوانی کرده بودین، که کامنتش کردم، احتمالا بازم یه جایی همچین دستوری رو نوشتین چک کنین
آخرین ویرایش به وسیله mr.sirwan : جمعه 06 اسفند 1395 در 14:11 عصر
این کل کدهام و بعد در رویداد لوود فرم تابع را فراخوانی میکنم
private void read_type()
{
DataTable dtt = new DataTable();
dtt = db.dataTableSelect(@"SELECT statuss FROM tbl_TazakorKatbi");
dataGridView1.DataSource = dtt;
for (int i = 0; i < dtt.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[2].Value.ToString() == "0")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Shape63;
}
else if (dataGridView1.Rows[i].Cells[2].Value.ToString() == "1")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Check_01;
}
//else if (dataGridView1.Rows[i].Cells[2].Value.ToString() == "2")
//{
// DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
// imageCell.Value = (Image)SGP.Properties.Resources.Cancel;
//}
MessageBox.Show(dataGridView1.Rows[i] + "-" + dataGridView1.Rows[i].Cells[2].Value.ToString());
}
}
روی مسیج باکس breakpoint بزارید با f11 تریس کنید ببینید چه اتفاقی میافته.
باسلام
من با کمک دوست خوبم آقای که واقعا زحمت کشیدند تلاش کردیم به یسری از مشکلاتی مثل API ایی که من توی پروژه ام استفاده کرده بودم برخوردیم و حلش کردیم ولی مشکل از چندتا کد خیلی خیلی ساده است و نمیدونم باید چکارش کنم که درست بشه......
من ی فرم دارم که درونش 2تا پنل گزاشتم یکی بعنوان منو و پنل دوم خالی است برای اینکه فرم فراخوانی شده درون این پنل با کدهای زیر نمایش داده بشه...
this.cursor=cursors.waitcursor;
lbl_title.text = btn_law.tex;
p_content.visible =false;
frmtazakor tazakor=new frmtazakor();
tazakor.formborderstyle= formborderstyle.none;
tazakor.dock=dockstyle.fill;
tazakor.toplevel =false;
p_content.controls.clear();
p_contrentc.controls.add(tazakor);
tazakor.show();
this.cursor=cursors.deffault;
خب تا اینجا هیچ مشکلی نیست و همچیز درست کار میکنه ولی درون فرم تذکر که فراخوانی میشه یه تابع که درون این تابع یک حلقه خیلی ساده با کد های زیر برای نشون دادن یک سری عکس براساس مقادیر یک ستون از دیتا گرید گذاشتم.
*بریک پوینت بروی tazakor.show(); گذاشتم که به خطای زیر برخورد.
IMG_20170226_103740.jpgIMG_20170226_103740.jpg
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[15].Value.ToString() == "0")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Shape63;
}
else if (dataGridView1.Rows[i].Cells[15].Value.ToString() == "1")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Check_01;
}
else if(dataGridView1.Rows[i].Cells[15].Value.ToString()== "2")
{
DataGridViewImageCell imageCell = dataGridView1.Rows[i].Cells[0] as DataGridViewImageCell;
imageCell.Value = (Image)SGP.Properties.Resources.Cancel;
}
}
}
حالا زمانی که فرم تذکر را درون پنل باز میکنم این تابع کار نمیکنه (یعنی ستونی که عکس است را نشون نمیده همون عکس ضربدر قرزم رنگ-پیش فرض نشون میده )ولی وقتی فرم تذکر را خارج از پنل باز می کنم کدها بدون مشکل کار میکنه و ستون عکس هم براساس مقادیر فیلد مورد نظرم عکس مورد نظر را نشون میده......
کسی میدونه مشکل از چیه؟؟؟؟
آخرین ویرایش به وسیله حسین.کاظمی : یک شنبه 08 اسفند 1395 در 15:42 عصر
کسی نیست کمکم کنه؟؟؟؟