Gridview с флажками внутри панели обновлений, проблема с подкачкой и кнопка возврата - PullRequest
0 голосов
/ 18 августа 2011

Я использую Gridview, первый столбец - это флажки.

Gridview использует разбиение на страницы и сортировку.

Флажки находятся внутри UpdatePanel, потому что я использую событие CheckedChanged, когда флажок установлен (не хочу использовать полную обратную передачу).

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

Это прекрасно работает, за исключением, например, когда вы переходите на страницу 2, а затем нажимаете кнопку "Назад" в браузере.

Когда вы нажимаете кнопку «Назад», все флажки, которые были отключены, отображаются активированными, и пользователь может выбрать больше, чем максимум.

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

Есть ли способ, которым я могу решить это?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 09 августа 2013

Идеальное решение, если у вас есть сетка в панели обновления

function SelectAll(myvar) {
    if (jQuery(myvar).attr('checked')) {
        var checkboxes = jQuery(':checkbox', '#ContentGrid');
        for (i = 0; i < checkboxes.length; i++) {
            jQuery(checkboxes[i]).attr('checked', true)
        }
    }
    else {
        var checkboxes = jQuery(':checkbox', '#ContentGrid');
        for (i = 0; i < checkboxes.length; i++) {
            jQuery(checkboxes[i]).attr('checked', false)
        }
    }
        }
<asp:GridView ID="contentsGrid" runat="server"><columns>
<asp:TemplateField>
<HeaderTemplate><asp:CheckBox ID="chkAll" Text="Select" runat="Server" SelectAll(this);"     />  

</HeaderTemplate>
<ItemTemplate><asp:CheckBox ID="chkContent"     runat="Server" /></ItemTemplate></asp:TemplateField>

</columns>
</asp:GridView>
0 голосов
/ 31 августа 2011

Решением, которое я нашел, было использование HiddenField помимо каждого флажка. У скрытого поля есть идентификатор каждого предмета.

Затем я установил Cookie с подключами, каждый подключ содержит идентификатор каждого флажка.

Наконец, в событии onload с использованием javascript я извлекаю cookie и проверяю флажки, которые оставались непроверенными после нажатия пользователем кнопки «назад».

...