Member 10371658 Ответов: 1

как удалить строку из datatable в asp.net


у меня есть gridview, и я связываю его с datatable. я хочу написать код для события gridview_rowdeleting, когда я нажимаю на ссылку delete строки gridview, эта строка должна удаляться из datatable, а когда нажимаю другую строку delete, то и текущая, и предыдущая строка должны удаляться из datatable. я очень стараюсь, но не могу решить эту проблему. пожалуйста, помогите мне.
заранее спасибо.
ниже приведен мой код:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
       {
           int intforumid = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
           int ii = e.RowIndex;
           lst.Add(ii);
          // ViewState["ind"] = ViewState["ind"] + e.RowIndex.ToString() + ",";
           ViewState["ind"] = ViewState["ind"] + e.RowIndex.ToString() + ",";
           List<int> del = new List<int>();

           string[] str = ViewState["ind"].ToString().Split(',');
           for (int k = 0; k < str.Length; k++)
           {
               if (str[k] != "")
               {
                   //foreach (DataRow d in dt.Rows)
                   //{
                   //    if (Convert.ToString(d["id"]) == str[k])
                   //    {
                   del.Add(Convert.ToInt32(str[k]));
                   // dt.Rows.RemoveAt(Convert.ToInt32(str[k]));
                   // dt.AcceptChanges();
                   //    }
                   //}
               }
           }
           int i1 = 0;
           for (int s = 0; s < del.Count; s++)
           {
               i1 = s;
               dt.Rows.RemoveAt(i1++);
               dt.AcceptChanges();
           }
           GridView1.DataSource = null;
           GridView1.DataSource = dt;
           GridView1.DataBind();
       }

1 Ответов

Рейтинг:
0

Suvendu Shekhar Giri

Вы написали слишком много материалов, чтобы сделать простое удаление, не знаю почему.
Можете ли вы попробовать следовать коду, просто комментируя свое событие RowDeleting в течение некоторого времени и проверяя, работает ли оно для вас?

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    int index = Convert.ToInt32(e.RowIndex);
    DataTable dt = ViewState["dt"] as DataTable;  //datatable stored previousely in viewstate
    dt.Rows[index].Delete();
    dt.AcceptChanges();
    ViewState["dt"] = dt;  //save the new values back to the viewstate
    GridView1.DataSource = dt;
    GridView1.DataBind();
}


Примечание: это приведет к удалению строки из datatable, а не из базы данных, для которой вам нужно написать логику дальше.

Надеюсь, это поможет :)


Member 10371658

спасибо, дорогая, это прекрасно работает. в соответствии с моими потребностями он работает нормально.
Большое спасибо.

Suvendu Shekhar Giri

Рад, что это помогло :)
Пожалуйста, отметьте как ответ, чтобы другие могли взять ссылку на него.

SDK Channel

Привет друг, я следую вашему коду, но у меня есть ошибка в dt.Rows[index].Удалить();
пожалуйста, помогите мне. спасибо