2010-06-04 6 views
1

Я использую C#, ASP.NETGridview Edit не работает после сортировки ASP.NET

У меня есть Gridview, для которых я предоставил сортировку, функциональность редактирования. Я не могу выполнить EDIT, когда выполняю сортировку. После редактирования сортировки задается другая строка. Я думаю, что есть какая-то проблема с индексом она принимает ..

Может ли один помочь мне, как это исправить ..

С уважением sbmarya

ответ

0

Я думаю, что проблема в том, что сортировка с использованием другой вызов/datasouce, чем редактирование. Поэтому в событии RowEditing я получаю индекс относительно порядка сортировки (либо ASC(), либо DESC()). Но тогда я связываю использование getUsers(), которое возвращает данные в другом порядке.

Что я сделал - я сохранил какой-то флаг (Value) в ViewState, чтобы указать, в каком порядке сортировки я нахожусь, и использовал его, когда я привязываюсь к событию редактирования, чтобы я мог вызвать правильный метод для возврата одного и того же источника данных.

С уважением, sbmarya

0

Я столкнулся с этой проблемой, а также. Вот как я его исправил. (В моем примере gridview сортируется по столбцу с именем submit date).

a. Когда базовый dataTable gridview разбит и отсортирован, сохраните его в переменной сеанса. Фокус в том, что перед сохранением переменной сеанса убедитесь, что вы сохранили отсортированное представление.

     dt.DefaultView.Sort = "Submit Date" + " " + "DESC"; 
         GridView1.DataSource = dt; 
         GridView1.DataBind(); 
         Session["gridViewData"] = dt.DefaultView.ToTable(); //Only storing dt will not have the sorted table stored in session. 

b. затем выполните все операции редактирования/обновления, используя данные, сохраненные в сеансе на предыдущем шаге. Он всегда будет отображаться в правильном порядке сортировки, и вы не увидите неожиданно меняющегося изменения индекса строки после обновления.