Gridview在更新面板内有复选框,分页和后退按钮有问题

Gridview在更新面板内有复选框,分页和后退按钮有问题,gridview,back-button,updatepanel,Gridview,Back Button,Updatepanel,我使用的是Gridview,第一列是复选框 Gridview使用分页和排序 复选框位于UpdatePanel中,因为我在选中复选框时使用CheckedChanged事件,我不想使用完整回发 每次选中复选框时,如果需要,在codebehind中启用比较项目按钮,保存在viewstate中选中的复选框,并检查所选项目是否未达到最大值。如果达到最大项目数,我将禁用其余未选中的复选框最大项目数是一个限制,以避免用户选择更多无法在页面布局中显示的项目 这非常有效,除非您转到第2页,然后点击浏览器的“后退”

我使用的是Gridview,第一列是复选框

Gridview使用分页和排序

复选框位于UpdatePanel中,因为我在选中复选框时使用CheckedChanged事件,我不想使用完整回发

每次选中复选框时,如果需要,在codebehind中启用比较项目按钮,保存在viewstate中选中的复选框,并检查所选项目是否未达到最大值。如果达到最大项目数,我将禁用其余未选中的复选框最大项目数是一个限制,以避免用户选择更多无法在页面布局中显示的项目

这非常有效,除非您转到第2页,然后点击浏览器的“后退”按钮

单击“上一步”按钮时,所有已禁用的复选框都将显示为已启用,用户可以选择超过最大值的复选框

如果我不为复选框使用updatepanel,它工作得很好,它会记住禁用的复选框,但我不想每次选中复选框时都进行完整的回发

我有办法解决这个问题吗


非常感谢

我找到的解决方案是在每个复选框之外使用一个隐藏字段。Hiddenfield具有每个项目的id

然后我设置了一个带有子键的Cookie,每个子键包含选中的每个复选框的id


最后,在使用javascript的onload事件中,我检索cookie并选中在用户按下back按钮后未选中的复选框

完美的解决方案,如果您在更新面板中有gridview

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>

试图格式化您的代码-不太成功;-请编辑和改进并解释您所做的工作。目标是教学。