PDA

View Full Version : سوال: مخرب کلاس DataGridViewCheckBoxColumn چیه؟؟



kkkaka
سه شنبه 07 شهریور 1391, 17:01 عصر
سلام به همه
دوستان بنده تو دیتاگرید خودم یک ستون از نوع CheckBox اضافه کردم حالا میخوام وقتی کاربرم فرم رو برای وروود مقادیر جدید Reset کرد تمام اطلاعات دیتا گرید پاک بشه برای اینکار از این دستور استفاده میکنم:

dgv1.DataSource = null;

ولی مشکلم اینه که هنگام ورود داده جدید دیتا گرید یک ستون اضافه از نوع CheckBox ایجاد میکنه!!
یعنی اگر 10 با فرم ریست بشه من 10 تا ستون CheckBox دارم!!!
این بخاطر اینه که من موقع ورود داده جدید ستون CheckBox رو ایجاد میکنم به همین خاطر ستونهایی که از قبل ایجاد شده اند هنوز وجود دارند!!!
سوال بنده اینه که چجوری ستونی که خودم درست کردم نابود کنم؟!
ما در هر کلاس یک سازنده یا constructor داریم ویک مخرب حالا مخرب کلاس DataGridViewCheckBoxColumn چیه؟!

kkkaka
سه شنبه 07 شهریور 1391, 17:49 عصر
mafaman2003 (http://barnamenevis.org/member.php?71297-mafaman2003) جان از این دستور که استفاده میکنم موقع پر کردن مجدد دیتا گریددر اولین قسمتی که هدر ستونمو مقدار میدم این پیغام خطا رو میده :
Object reference not set to an instance of an object.

hamidkh
سه شنبه 07 شهریور 1391, 18:05 عصر
دوست عزیز باید قبل از اینکه گرید رو مجدد بایند کنی این دستور رو بزنی

if (dataGridView1.Columns.Count > 0)
{
dataGridView1.Columns.Clear();
}

kkkaka
سه شنبه 07 شهریور 1391, 18:58 عصر
حمید جان فرقی نداره در هر صورت از دستور dataGridView1.Columns.Clear(); ایراد میگیره .
اگه زحمتی نییست یه نمونه برنامه برام بذارید.
ممنون

hamidkh
سه شنبه 07 شهریور 1391, 19:33 عصر
یه تابع برای بایند کردن گرید نوشتم که هر بار تغییری ایجاد میشه فراخوانیش میکنم.



void GridBind()
{
string select = "SELECT * FROM CourseTbl";
CourseGrid.Columns.Clear();
DataTable dt = DB.Select(select);
CourseGrid.DataSource = dt;
dt.Dispose();
CourseGrid.Columns[0].HeaderText = "کددرس";
CourseGrid.Columns[1].HeaderText = "نامدرس";
CourseGrid.Columns[2].HeaderText = "تعدادواحد";
DataGridViewCheckBoxColumn ch = new DataGridViewCheckBoxColumn();
ch.HeaderText = "انتخاب";
ch.Width = 50;
ch.ReadOnly = false;
CourseGrid.Columns.Add(ch);
}

اون DB هم یه کلاس برای اتصال به بانک

Mahmoud.Afrad
سه شنبه 07 شهریور 1391, 19:41 عصر
اگر هم میخوای ستون خاصی را از بین ببری dataGridView1.Columns["column name"].Dispose(); ولی در هر صورت اگر میخوای دوباره عمل بایند را انجام بدی باید همه ستونها را پاک کنی و بعد بایند کنی و بعد ستون چک باکس را اضافه کنی.