Эй, ребята, у меня есть ASP.NET GridView, связанный с DataView, который содержит DataTable. Я не использую DataAdapter.
Я хочу обновить строку в моей таблице данных, поэтому я делаю это:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DataView dv = (DataView)Session["My_DataTable"];
DataTable dt = dv.Table;
int rowIndex = GridView1.Rows[e.RowIndex];
dt.Rows[rowIndex]["FirstName"] = thenewfirstname;
dt.Rows[rowIndex]["MI"] = thenewmi;
dt.Rows[rowIndex]["LastName"] =thenewlastname;
Session["My_DataTable"] = dv;
//Reset the edit index.
GridView1.EditIndex = -1;
//Bind data to the GridView control.
GridView1.DataSource = Session["My_DataTable"];
GridView1.DataBind();
}
Базовый DataView / DataTable изменен правильно, но GridView содержит как старую строку до редактирования, так и новую строку после редактирования (то есть добавляет новую строку с новыми правками!).
Например, если у нас есть:
...
Sammy S Samerson
...
и измените его на Sammy E Samerson
в сетке:
...
Sammy S Samerson
Sammy E Samerson
...
Как это исправить, что я сделал не так?