PDA

View Full Version : سوال: مشکل در شرط گذاشتن در DataGridView???



kkkaka
یک شنبه 05 شهریور 1391, 09:36 صبح
سلام به همه:قلب:
من با برنامه نویسی به دیتا گریدم یه ستون از نو ع چک باکس اختصاص دادم و به این صورت کار میکنه که اگر Value های ستون "TF" صفر باشن چک نمیخوره و اگر یک باشن به صورت اتوماتیک چک خورده جدولمو پر میکنه.
حالا میخوام هر رکوردی که Value او برابر 0 بود چک باکس اون رکورد ReadOnly بشه.
این چیزیه که به فکر خودم رسید ولی کلآ if دومی رو قبول نمیکنه!!!


foreach (DataGridViewRow row in dgv1.Rows)
{
if (row.Cells[0].Value != null)
{

if (row.Cells[0].Value == 0)
{

row.Cells[0].ReadOnly = true;

}
}
}

oas123
یک شنبه 05 شهریور 1391, 09:51 صبح
سلام خسته نباشید مطلب جالبی بود

kkkaka
یک شنبه 05 شهریور 1391, 11:34 صبح
سلام
سلامت باشید
دوست عزیز عذر میخوام ولی این یک سواله و نه یه آموزش!
این کد ایراد داره

Y_Safaiee
یک شنبه 05 شهریور 1391, 14:15 عصر
با سلام خدمت شما دوست عزیز

من نفهمیدم چرا شما دوباره if نوشتین؟!!!اصلا منطقش اشتباست اگه میخواین ببینین Null نیست پس چرا باز شرط زدین 0 نباشه اگه میخواین دوتاش باشه چرا اینطوری ننوشتین :



foreach (DataGridViewRow row in dataGridView1.Rows)
{
if(row.Cells[2].Value !=null && row.Cells[2].Value ==0) //کدهاتون
}


اما اگه منظورتون این بود که ببینه هر سطری کدوم چک داره اگه داشت اون سطر فعال و اگه نداشت غیرفعال شه کدش اینه :


foreach (DataGridViewRow row in dataGridView1.Rows)
{
bool chk = (bool)row.Cells[2].Value;
if (chk == false) row.ReadOnly = false ;
else row.ReadOnly = true ;
}


اگه دیتاگرید رو حالت Edit کردنشو تیکشو بزنی بعد این کد رو داشته باشی سطرهایی که تیک دارن قابل ویرایش و سایرین قابل ویرایش هستن.

موفق باشی
بایت بایت

kkkaka
یک شنبه 05 شهریور 1391, 15:11 عصر
خیلی ممنون یونس جان ولی متاسفانه پیغام خطای زیر رو میده:
specified cast is not valid

Y_Safaiee
یک شنبه 05 شهریور 1391, 15:24 عصر
ببین تیک adding دیتاگریدت خورده یا نه؟اگه تیکش هست برش دار, یعنی سطر اضافه نباید داشته باشی اگه 4تا رکورد داری باید 4تا سطرم داشته باشی و سطر اضافی تو دیتاگرید نباشه

kkkaka
یک شنبه 05 شهریور 1391, 15:34 عصر
بازم همون error رو میده
من جدولمو اینجوری پر میکنم وستون چک باکس رو ایجاد میکنم

cn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da;
ds.Clear();
da = new SqlDataAdapter("select ghestid,datenow,datedef,mablagh,mablaghdef,mande,t f from[" + t + "]", cn);
da.Fill(ds);
dgv1.DataSource = ds.Tables[0];
cn.Close();
//پرکردن فیلد مبلغ و تاریخ فروش از بانک buy
cn.Open();
cmd.CommandText = "select * from buy where docid= '" + tbsanad.Text + "'";
dr = cmd.ExecuteReader();
Object[] n = new Object[22];
dr.Read();
dr.GetValues(n);
DataGridViewCheckBoxColumn myCheck = new DataGridViewCheckBoxColumn();
myCheck.HeaderText = "مجازی";
myCheck.DataPropertyName = "tf";
myCheck.FalseValue = "0";
myCheck.TrueValue = "1";
dgv1.AutoGenerateColumns = false;
dgv1.Columns.Insert(0, myCheck);

SokooteShab1
یک شنبه 05 شهریور 1391, 15:52 عصر
به جای تبدیل نوع از این کد استفاده کن.



foreach
(DataGridViewRow row in dataGridView1.Rows)

{



if (row.Cells[2].Value.ToString().Trim().ToLower()=="false") row.ReadOnly =false ;

else row.ReadOnly = true ;

}

kkkaka
یک شنبه 05 شهریور 1391, 16:40 عصر
SokooteShab1 (http://barnamenevis.org/member.php?142205-SokooteShab1)
عزیز مرسی از راهنماییت ولی خطا میده میگه اولآ نمیتونه از "==" استفاده کنه و بعد که عبارتم به بولین کنورت کردم میگه نمیتونه String رو به بولین تبدیل کنه!
(http://barnamenevis.org/member.php?142205-SokooteShab1)

SokooteShab1
یک شنبه 05 شهریور 1391, 23:18 عصر
ببخشید حواسم نبود false اول رو باید تو دابل کوتیشن میذاشتم."false" ویرایشش کزدم.

kkkaka
دوشنبه 06 شهریور 1391, 18:30 عصر
SokooteShab1 (http://barnamenevis.org/member.php?142205-SokooteShab1)
عزیز ممنون از لطفت با کمک شما اینجوری حل شد.



foreach(DataGridViewRow row in dgv1.Rows)
{
if (row.Cells[0].Value.ToString() == "0")
row.ReadOnly = true;
else
row.ReadOnly = false;
}