ASP.net вставил строку в Datatable исчезает при смене страницы - PullRequest
1 голос
/ 21 декабря 2011

Итак, у меня есть данные на моем веб-сайте, и он отображает 10-20 строк заполненных данных.Я добавил строку кода, которая вставляет пустую строку в существующую таблицу данных с кодом ниже:

 dt.Rows.InsertAt(datatable.NewRow, 8)

У меня также есть это, что необходимо для выполнения подкачки в таблице данных:

 Protected Sub GridView3_PageIndexChanging(sender As Object, e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView3.PageIndexChanging
    GridView3.PageIndex = e.NewPageIndex
    GridView3.DataBind()
End Sub

Проблема в том, что когда я перехожу со страницы 1 на 2, а затем обратно на 1, все вставленные строки исчезают, оставляя только заполненные строки.Есть ли способ сохранить вставленные строки ??Или у кого-нибудь есть какое-либо объяснение или решение для этого?

Спасибо.

1 Ответ

2 голосов
/ 21 декабря 2011

Ваш вызов DataBind восстанавливает GridView из его исходных данных.Вам нужно будет убедиться, что набор данных, к которому вы привязываете, включает в себя добавленные элементы.Как правило, у меня есть метод, который собирает элементы со страницы и связывает их с помощью этих элементов.

В вашем случае вам нужно просто выполнить повторное связывание с DataTable (в вашем примере с именем dt).код) при добавлении новой строки.

GridView3.DataSource = dt

Это означает, что вам придется где-то хранить его.Из вашего кода неясно, откуда взялся оригинал DataTable, поэтому у меня нет никаких предложений относительно того, куда вы можете двигаться дальше.А поскольку ваша сетка поддерживает разбиение на страницы, мой типичный подход даже не работает.

Проще говоря, поскольку это веб-страница, сервер ничего не запоминает между постбэками, которые где-то не сохраняются.Вы можете сохранить его на странице где-нибудь, сохранить в базе данных или сохранить в сеансе - очень плохая идея для наборов данных любого значительного размера.

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

...