2015-09-30 3 views
0

У меня есть сетка и добавлен флажок в шаблоне элемента. Эта сетка имеет несколько столбцов вместе с DataKey (primary key). Из-за увеличения производительности эта сетка будет отображать следующий набор повторений при каждом изменении страницы в зависимости от номера страницы. Так что это сделано.Персистский флажок в gridview при пользовательском подкачке

Теперь, когда пользователь выбирает флажок на первой странице, а затем переходит на страницу 2 и возвращается к первой странице, пользователь не увидит флажок, установленный ранее пользователем.

Так что есть хороший способ сохранить флажок при перемещении страницы на страницу?

Этот флажок используется в качестве флага для выбора строк, которые могут быть удалены позже кнопкой вне сетки.

+0

Что делает ** checkbox ** делать? Выполняет ли какой-либо операции с сервером в нем ** oncheckedchanged ** событие, например, обновление одного или нескольких полей? – Prabhat

+0

Пользователь хотел бы установить флажок, а затем выполнить либо удаление, нажав кнопку за пределами сетки. Это похоже на функциональность в Gmail. – amir

ответ

0

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

Создать учетную array[] объект через JavaScript, который будет добавить в список в DataKey всякий раз, когда выбран флажок, и в свою очередь, удалить его если флажок снят. Что-то вроде этого:

var selectedDataKeys = []; 

$('.checkboxclass').on('change', function() { 

    // Considering you assign the data key as id for the checkbox otherwise implement a way to retrieve the id. 
    var dataKey = $(this).prop('id'); 

    // Determine if the dataKey is in the selected data keys array 
    var isContained = (selectedDataKeys.indexOf(dataKey) > -1); 

    if($(this).is(':checked')) { 
     // If is contained is false - add to the array 
     if (!isContained) 
     selectedDataKeys.push(dataKey); 
    } else { 
     // If is contained is true - remove to the array 
     if (isContained){ 
     selectedDataKeys = $.grep(selectedDataKeys, function(value) { 
      return value != dataKey; 
     }); 
     } 
    } 
}); 

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

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

Смежные вопросы