Обновление DataTable? - PullRequest
       4

Обновление DataTable?

0 голосов
/ 17 августа 2010

Эй, ребята, у меня есть 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
...

Как это исправить, что я сделал не так?

Ответы [ 2 ]

1 голос
/ 18 августа 2010

Вы проверяли индекс строки строки редактирования. int rowIndex = GridView1.Rows [e.RowIndex]; Вы можете напрямую использовать e.RowIndex.

Мое предложение - получить строку, используя любое ключевое поле таблицы.

например

DataRow[] customerRow = 
dataSet1.Tables["Customers"].Select("CustomerID = 'ALFKI'");

customerRow[0]["CompanyName"] = "Updated Company Name";
customerRow[0]["City"] = "Seattle";

Вы можете получить значения строки, используя положение ячейки. Или используйте datakeynames например:

string courseid = GridView1.Rows[e.RowIndex].Cells[3].Text;
1 голос
/ 18 августа 2010

Происходило много странных вещей.

Суть всех плохих вещей была в DataView - потому что вещи переупорядочивались, индекс GridView и индекс DataTable в DataView.не совпадали.DataTable должен был проходить циклически, пока не была найдена правильная только что отредактированная запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...