PDA

View Full Version : مبتدی: اشکال این کد چیه؟



zhr.rezae66i
جمعه 20 بهمن 1391, 13:53 عصر
این کد وقتی چندتا check box tik mikhore error mide
چرا؟



protected void btnDel_Click(object sender, EventArgs e)
{
foreach (GridViewRow gr in GridView1.Rows)
{
CheckBox ch = (CheckBox)gr.FindControl("CheckBox1");
if (ch.Checked && ch!=null)
{
int id = Convert.ToInt32(GridView1.DataKeys[gr.RowIndex].Value);
del(id);
}
}
LoadData1();
}

ahmad156
جمعه 20 بهمن 1391, 14:08 عصر
سلام.چه خطایی میده؟
خواهشا فرمت code ها رو رعایت کنین تا خواناتر بشه!

zhr.rezae66i
جمعه 20 بهمن 1391, 14:15 عصر
argumentOutOfRangeException was unhandles by user code
بعدم فقط یکیشو حذف میکنه

ahmad156
جمعه 20 بهمن 1391, 14:21 عصر
خب مسلما یه دونه بیشتر رو حذف نمیکنه چون شما بعد از حذف اولی دارین GridView تون رو دوباره بایند میکنین و حلقه foreach خطا میده.
شما در ابتدا تمام id هایی رو که برای حذف انتخاب شده اند درون همون حلقه foreach پیدا کنین بعد همه رو با هم حذف کنین

zhr.rezae66i
جمعه 20 بهمن 1391, 14:32 عصر
اما حتی وقتی load data رو که بایند میکنه رو بیرون foreach میزارم درست نمیشه
میشه برام بنویسید

ahmad156
جمعه 20 بهمن 1391, 14:46 عصر
همون کاری رو که گفتم انجام بدین توی حلقه foreach به صورت زیر بنویسین

foreach (GridViewRow gr in GridView1.Rows)
{
CheckBox ch = (CheckBox)gr.FindControl("CheckBox1");
if (ch.Checked && ch!=null)
{
List<int> listOdId=new List<int>();
listOdId.Add(Convert.ToInt32(GridView1.DataKeys[gr.RowIndex].Value);
}
}


بعد از foreach ابتدا حذف رو انجام بدین به ازای همه id ها وبعد از اون Bind رو انجام بدین

zhr.rezae66i
جمعه 20 بهمن 1391, 14:58 عصر
نه
درست نشد
حتی با اینکار باز به همین خط
listOdId.Add(Convert.ToInt32(GridView1.DataKeys[gr.RowIndex].Value);
ایراد میگیره و همون ایراد قبلیه
اینبار همون یک رکورد هم حذف نکرد!




List<int> ls=new List<int>();

foreach (GridViewRow gr in GridView1.Rows)
{

CheckBox ch = (CheckBox)gr.FindControl("CheckBox1");

if (ch.Checked && ch!=null)
{

ls.Add(Convert.ToInt32(GridView1.DataKeys[gr.RowIndex].Value));
}

}

foreach (int i in ls)
{
del(i);
}
LoadData1();

b.paseban
جمعه 20 بهمن 1391, 15:27 عصر
از این دوتا تاپیک کمک بگیرید
ASP.NET Delete Multiple GridView rows via Checkbox template (http://stackoverflow.com/questions/8177389/asp-net-delete-multiple-gridview-rows-via-checkbox-template)
Delete multiple asp.net gridview rows with checkbox selection and with confirmation (http://www.aspdotnet-suresh.com/2011/02/how-to-delete-multiple-rows-in-gridview.html)

ahmad156
شنبه 21 بهمن 1391, 09:30 صبح
لطفا تابع del و LoadData رو بذارین

zhr.rezae66i
شنبه 21 بهمن 1391, 10:00 صبح
مشکل حل شد
با همون دستور اولیه خودم
مدام error میداد بعدم خودش درست شد
نفهمیدم اصلا چی شد که درست شد:)