PDA

View Full Version : انتخاب رکوردهای انتخاب شده در Data grid view



mahdi_sun
شنبه 17 آذر 1386, 21:11 عصر
با سلام
من در حال نوشتن برنامه ای هستم که در اون رکوردها در یک دیتا گرید ویوو نمایش داده می شود و در کنار هر Row یک Check box هست می خواهیم لیست رکورد هایی که چک باکس آنها تیک خورده را بدست بیاوریم .
قبلا از کمک شما ممنونم در ضمن زبانش سی شارپ هست

hassan razavi
شنبه 17 آذر 1386, 21:53 عصر
در کد زیر فرض شده که فیلد شماره 3 همون فیلد Check Box شماست و فیلد دوم مقدار مورد نظر برای بدست آوردن می باشد.



int x=0;
for( x=0;x<dataGridView1.Rows.Count;x++)
if((bool)dataGridView1[3,x].Value)
MessageBox.Show(dataGridView1[2,x].ToString());

mahdi_sun
سه شنبه 20 آذر 1386, 22:48 عصر
سلام بابت کدت هم ممنون
اما من به یک مشکل اساسی دیگر برخوردم
دیتا گریدی که حرف از اش بود از یک دیتا ست پر می شه و من به صورت دستی این چک باکس رو به دیتا گرید اضافه کردم حالا موقعی که می خواهم مقدارش رو بخونم error زیر رو می ده
Object reference not set to an instance of an object.
البته داخل برنامه نگاه کردم شی های دیتا گرید و چک باکس new شده بودند با ستون های دیگه هیچ مشکلی نداره
قبلا از شما متشکرم.

mahdi_sun
پنج شنبه 22 آذر 1386, 21:45 عصر
کسی نیست کمک کنه

hdv212
پنج شنبه 22 آذر 1386, 21:57 عصر
من دقیقا همین مشکل رو پارسال روی یه پروژه داشتم، به این نتیجه رسیدم که یه بار رکوردهایی که تیک خوردن رو در داخل dataGridView لود کنم، اینطوری :

private void ShowOnlyChecked()
{
//define a new Datatable Object
DataTable dt = new DataTable();

//Copy Structure of Table to New DataTable Object (Schema)
dt = this.ds_zamin1.Zamin_1.Clone();

foreach (DataGridViewRow _gridViewRow in dataGridView1.Rows)
{
if (_gridViewRow.Cells[0].Value != null && _gridViewRow.Cells[0].Value.ToString() == "True")
dt.ImportRow(this.ds_zamin1.Zamin_1.Rows[_gridViewRow.Index]);
}

//Change DatagridView's DataSource to New DataTable Object
this.dataGridView1.DataSource = dt;
}