PDA

View Full Version : مشکل foreach در datagrid



M aJi D
پنج شنبه 18 فروردین 1390, 21:08 عصر
سلام .
ببخشید دوستان به تازگی برنامه نویسی توی C#.Net را شروع کردم به 1 مشکل برخوردم .
من دستوری توی Vb.Net بلد بودم که تمام آیتمهای datagrid را بررسی میکنه اما نمونشو توی C#پیدا نکردم.
دستور توی Vb.Net اینه :




Dim chkbox as checkbox
Dim oItem as DataGridItem
for each oItem in DataGrid1.items
chkbox = ctype(oItem.cells(10).controls(1),checkbox)
next


حالا نمیدونم چجوری باید همین دستورو توی C# بنویسم کسی میتونه نمونه ای بهم بگه که توی C# جواب بده؟
درمورد دستور هم باید بگم این دستور برای 1دونه datagrid نوشته شده که توی 1ستونش checkbox قرار دادم و میخوام با این دستور و با متغییر oItem توی datagrid بگرده و checkbox هارو چک کنم اگر تیک خورده بودن مقدار اون checkbox را بریزه توی متغیر chkbox



ممنون

میلاد قاضی پور
پنج شنبه 18 فروردین 1390, 21:48 عصر
نمونه زیاده برای این کار . ابتدا باید تمام چکباکس های دیتاگرید ویو رو با فالس مقدار دهی کنید چون مقدار اولیه چکباکس ها نال هست . شما به جای "آیتم"، در حلقه ی فوریچ سیشارپ باید از datagridviewrow row in datagridview1.rows استفاده کنید .

M aJi D
پنج شنبه 18 فروردین 1390, 22:11 عصر
نمونه زیاده برای این کار . ابتدا باید تمام چکباکس های دیتاگرید ویو رو با فالس مقدار دهی کنید چون مقدار اولیه چکباکس ها نال هست . شما به جای "آیتم"، در حلقه ی فوریچ سیشارپ باید از datagridviewrow row in datagridview1.rows استفاده کنید .

دوست عزیز من توی forech اینجوری مینویسم


foreach(datagridviewrow row in datagridview1.rows(

اما توی همون ابتدا ایراد میگیره و میگه datagridrow وجود نداره.
درضمن میشه در مورد ادامه مطلب هم توضیح بدید؟ بعد اینکه این for اجرا میشه با چه کدی checkboxهای تیک خورده را شناسایی و توی 1 متغییر بریزم؟

mmd2009
جمعه 19 فروردین 1390, 03:54 صبح
با سلام.

به اینجا (http://stackoverflow.com/questions/2332098/how-to-add-gridview-rows-to-a-datatable)یک مراجعه کنید شاید مشکلتون حل شد.

RIG000
جمعه 19 فروردین 1390, 05:24 صبح
دوست عزیز من توی forech اینجوری مینویسم


foreach(datagridviewrow row in datagridview1.rows(

اما توی همون ابتدا ایراد میگیره و میگه datagridrow وجود نداره.
درضمن میشه در مورد ادامه مطلب هم توضیح بدید؟ بعد اینکه این for اجرا میشه با چه کدی checkboxهای تیک خورده را شناسایی و توی 1 متغییر بریزم؟
از اول سوالتو نخوندم . اما اینو datagridviwrow ایرراد میگیره شاید بخاطر اینه که درست ننوشتیش . این شکلی >> DataGridViewRow

M aJi D
جمعه 19 فروردین 1390, 10:45 صبح
از اول سوالتو نخوندم . اما اینو datagridviwrow ایرراد میگیره شاید بخاطر اینه که درست ننوشتیش . این شکلی >> DataGridViewRow

نه دوست عزیز دیگه نوشتن را که غلط نمینویسم . توی C# اصلاً datagridview وجود نداره و datagridخالی داره و خاصیتهای موجود در اونم datagriditem و datagridcolumn هست اما هیچ کدوم کمک نمی کنه نمیدونم چیکار کنم.
من کد را به شکل زیر نوشتم :


DataGridItem oItem = default(DataGridItem);
CheckBox chkbox = default(CheckBox);
int RowId ;
foreach (object oItem_loopVariable in StudentGridView.Rows)
{
chkbox = (CheckBox)oItem.Cells[9].Controls[1];
}



اما وقتی اجرا میگیرم و 1کی از checkboxهارو تیک میزنم و دکمه اجرای foreach را زدم ارور زیر را میده


Object reference not set to an instance of an object.

RIG000
جمعه 19 فروردین 1390, 13:00 عصر
checkbox chkbox = default(checkbox);
DataGridItem oItem = default(DataGridItem);
foreach ( oItem in DataGrid1.items) {
chkbox = (checkbox)oItem.cells(10).controls(1);
}

میلاد قاضی پور
جمعه 19 فروردین 1390, 13:44 عصر
من از روی نمونه هایی که خودم نوشتم مثال زدم . اینم کدی که مستقیم از برنامه ام کپی کردم اینجا کاملا هم صحیحه و کار میکنه :



foreach (DataGridViewRow row in gridview.Rows)
{
if ((bool)row.Cells[0].Value == true)
funcDelete("delete from " + tablename + " where " + primarykey + "=" + row.Cells[1].Value);
}

M aJi D
شنبه 20 فروردین 1390, 15:56 عصر
من از روی نمونه هایی که خودم نوشتم مثال زدم . اینم کدی که مستقیم از برنامه ام کپی کردم اینجا کاملا هم صحیحه و کار میکنه :



foreach (DataGridViewRow row in gridview.Rows)
{
if ((bool)row.Cells[0].Value == true)
funcDelete("delete from " + tablename + " where " + primarykey + "=" + row.Cells[1].Value);
}


دوست عزیز باور کنید اصلاً DataGridRow نداره توی قسمت اول.
فقط DataGridItem داره و DataGridColumns .
ببینم باید توی قسمت usingها چیزی اضافه کنم تا توی اولین قسمت forech بتونم بنویسمDataGridRow؟
این دستورات توی C# نیست انگار هرچی زدم ارور داد

میلاد قاضی پور
پنج شنبه 25 فروردین 1390, 17:10 عصر
من گفتم دیتا گریدویو رو

shadi khanum
پنج شنبه 25 فروردین 1390, 17:33 عصر
DataGridViewRow هم تو VB هست و هم C# . فرقی هم ندارن. دستور forEach هم توی هر دو تا هست. ضمنا چه اصراری به استفاده از forEach دارین؟ از for استفاده کنید

M aJi D
یک شنبه 11 اردیبهشت 1390, 12:42 عصر
من گفتم دیتا گریدویو رو

فکر کنم فهمیدم چرا منو شما به توافق نمیرسیدیم . شرمنده دوست عزیز من برنامم تحت وب هست برای همین datagridview نداره حالا چیکار کنم؟

میلاد قاضی پور
دوشنبه 12 اردیبهشت 1390, 20:45 عصر
gridviewrow

ضمنا در تالار asp باید مطرح کنین .