مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ali.majed

عضویت از 1394/09/15

مشکل در اجرای دستور حذف در GridView

  • چهارشنبه 28 بهمن 1394
  • 16:15
تشکر میکنم

با عرض سلام خدمت عزیزان
من در 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

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 28 بهمن 1394
  • 16:46

متن خطا را قرار دهید

کاربر سایت

ali.majed

عضویت از 1394/09/15

  • چهارشنبه 28 بهمن 1394
  • 17:12

با عرض سلام

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

این متن خطا هست ، از آن یک عکس هم گرفتم که به این پیام ، پیوست شده است . با تشکر فراوان

فایل های ضمیمه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 28 بهمن 1394
  • 17:14

چرا ID را مستقیم در CommandArgument قرار ندادید و از همون پس بگیرید ؟

نیازی به این همه کد هم نبود

کاربر سایت

ali.majed

عضویت از 1394/09/15

  • چهارشنبه 28 بهمن 1394
  • 17:17

منظورتون رو متوجه نشدم ، لطف می کنید اگه زحمتی نیست ، بیشتر توضیح بدین ؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 28 بهمن 1394
  • 17:21

یک ستون از نوع TemplateField اضافه کنید و داخل یک linkButton قرار بدید و میتونید خاصیت CommandName را ست کنید و همینطور میتونید خاصیت CommandArgument را برابر با ID هر خط یا قرار بدید اینطوری میتونید در کد مقدار را پس بگیرید

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)