با عرض سلام خدمت عزیزان
من در asp.net یک GridView ایجاد کردم که اطلاعاتم رو از پایگاه داده می خونه ، ولی وقتی دکمه ی حذف یا ویرایش رو می زنم ، خطا می گیره ، کسی می دونه باید چی کار کنم ؟
protected void gvPost_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "cmd_edit") { GridView gr = new GridView(); flag = 1; rowid = int.Parse(e.CommandArgument.ToString()); int edit = int.Parse(gr.Rows[rowid].Cells[0].Text); MasterDCDataContext db = new MasterDCDataContext(); var Qdel = db.Posts.Where(c => c.PoID == edit).Single(); txtTitle.Text = Qdel.PoTitle; txtText.Text = Qdel.PoSummery; txtAutor.Text = Qdel.PoAutor; } else if (e.CommandName == "cmd_del") { GridView gr = new GridView(); rowid = int.Parse(e.CommandArgument.ToString()); int delte = int.Parse(gr.Rows[rowid].Cells[0].Text); MasterDCDataContext db = new MasterDCDataContext(); var Qdel = db.Posts.Where(c => c.PoID == delte).Single(); db.Posts.DeleteOnSubmit(Qdel); db.SubmitChanges(); gvPost.DataBind(); } }
این کد ها مربوط به قسمت View Code هست و با اجرای برنامه این خطا رو مشاهده می کنم :
index was out of range. must be non-negative and less than the size of the collection. parameter name : index
line 151: GridView gr = new GridView();hhh
line 152: rowid = int.Parse(e.CommandArgument.ToString());hhh
line153: int delte = int.Parse(gr.Rows[rowid].Cells[0].Text);hhh
متن خطا را قرار دهید
با عرض سلام
index was out of range. must be non-negative and less than the size of the collection. parameter name : index
line 151: GridView gr = new GridView();hhh
line 152: rowid = int.Parse(e.CommandArgument.ToString());hhh
line153: int delte = int.Parse(gr.Rows[rowid].Cells[0].Text);hhh
این متن خطا هست ، از آن یک عکس هم گرفتم که به این پیام ، پیوست شده است . با تشکر فراوان
چرا ID را مستقیم در CommandArgument قرار ندادید و از همون پس بگیرید ؟
نیازی به این همه کد هم نبود
منظورتون رو متوجه نشدم ، لطف می کنید اگه زحمتی نیست ، بیشتر توضیح بدین ؟
یک ستون از نوع TemplateField اضافه کنید و داخل یک linkButton قرار بدید و میتونید خاصیت CommandName را ست کنید و همینطور میتونید خاصیت CommandArgument را برابر با ID هر خط یا قرار بدید اینطوری میتونید در کد مقدار را پس بگیرید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)