PDA

View Full Version : سوال: مشکل در مورد چک باکس دیتاگرید



MahmoodM30
شنبه 10 آبان 1393, 00:34 صبح
سلام دوستان من تو دیتاگرید که تو فرم دارم اطلاعات رو از دیتابیس لود میکنم و نشون میدم ولی یک ستون چک باکس دارم که هیچ فیلدی ا دیتابیس رو هم بهش ربط ندادم فقط برای کلیک کاربر گذاشتم که اگه مایل بود از بین 100 تا مثلا 5 تاشو انتخاب کنه و بشه اون 5 تا رو پرینت گرفت

حالا هرچی میکنم نمیتونم این رو علامت دار کنم و هر چی کلیک میکنم نمیشه

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

MahmoodM30
شنبه 10 آبان 1393, 01:12 صبح
وقتی با این کد میخوام چک کنم که آیا مقدارش true هست یا false خطا میده

if ((bool)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value)
MessageBox.Show("yes");
else
MessageBox.Show("no");

دوستان اگه روشی رو بگن که بشه فهمید مقدارش چیه ممنون میشم

pedram.11
شنبه 10 آبان 1393, 01:20 صبح
سلام. نه کدی نه اروری :لبخند: اگه میشه پروژه رو بذارید ببینیم چشه

MahmoodM30
شنبه 10 آبان 1393, 10:44 صبح
نیاز به کد نیست که من خود کد رو بلد نیستم

این کد فرم لود هست که داده ها رو تو گرید نشون میده

on.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from TBLAnbarView WHERE VKH=1 ORDER BY date_vk DESC", con);
DataTable ds = new DataTable();
da.Fill(ds);
dataGridView1.DataSource = ds;
con.Close();

Amir4317
شنبه 10 آبان 1393, 10:54 صبح
راه حل احتمالی: اول روی جدول مقدار readonly مربوط به checkbox رو false کنید، بعد شرط مقدار داشتن سلول رو قبل از بررسی true یا false بودنش انجام بدید.
متن ارور اصلی رو هم بگذارید تا جواب صحیح و کامل دریافت کنید. :چشمک:

MahmoodM30
شنبه 10 آبان 1393, 12:20 عصر
با این کد چک میکنم ببینم تیکش زده شده یا نه

if ((bool)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value)
MessageBox.Show("yes");
else
MessageBox.Show("no");

ولی این خطا رو میده

125174

pedram.11
شنبه 10 آبان 1393, 12:33 عصر
قبل از این کدا چک کنید که dataGridView1.CurrentRowمقدارش null نباشه

MahmoodM30
شنبه 10 آبان 1393, 12:55 عصر
مقداری نداره که null باشه اصلا تو دیتابیسم براش فیلدی در نظر نگرفتم همینطوری اضافه کردم تو دیتاگرید

MahmoodM30
شنبه 10 آبان 1393, 12:56 عصر
من تنها چیزی که الان نیاز دارم این هست که چک کنم ببینم تیک داره یا نه همین

pedram.11
شنبه 10 آبان 1393, 12:59 عصر
دوست عزیز منظورم از مقدار نیست. اگه به اشتباه شما سلول یا سطری رو انتخاب نکرده باشید null میشه. شما این کدهارو قبل از کدتون بذارید:
if(dataGridView1.CurrentRow == null)
{
MessageBox.Show("current row is null");
return;
}
if(dataGridView1.CurrentRow.Index < 0 || dataGridView1.CurrentRow.Index >= dataGridView1.Rows.Count)
{
MessageBox.Show("Index Out of range");
return;
}

MahmoodM30
شنبه 10 آبان 1393, 13:25 عصر
این کد بهم هیچ کمکی نمیکنه

من فقط میخوام چک کنم که تیک خورده یا نه همین و این کد شما هیچ کاری نمیکنه

pedram.11
شنبه 10 آبان 1393, 13:50 عصر
عزیزم اروری که شما دارید احتمالا مربوط به null بودن object هست. من اینو دادم که قبل از اینکه مشکل پیش بیاد مطلع شید. حالا اینکه میخواید ارور رفع شه یا نه به خودتون برمیگرده. کل کدها:
if (dataGridView1.CurrentRow == null)
{
MessageBox.Show("current row is null");
return;
}
if (dataGridView1.CurrentRow.Index < 0 || dataGridView1.CurrentRow.Index >= dataGridView1.Rows.Count)
{
MessageBox.Show("Index Out of range");
return;
}
DataGridViewCheckBoxCell dgvc = ((DataGridViewCheckBoxCell)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0]);
if ((int)dgvc.Value == 1)
MessageBox.Show("yes");
else
MessageBox.Show("no");


موفق باشید

MahmoodM30
شنبه 10 آبان 1393, 13:58 عصر
مشکلم رو با این کد تونستم حل کنم

if (dataGridView1.Rows[e.RowIndex].Cells["Column9"].Value == null)
{
dataGridView1.Rows[e.RowIndex].Cells["Column9"].Value = true;
}
else
{
dataGridView1.Rows[e.RowIndex].Cells["Column9"].Value = false;
dataGridView1.Rows[e.RowIndex].Cells["Column9"].Value = null;
}