2011-08-18 40 views
0

我正在使用GridView,第一列是复选框。GridView与更新面板中的复选框,分页问题和后退按钮

在GridView使用寻呼和排序。

的复选框是UpdatePanel的,因为我用的CheckedChanged事件当复选框被选中的内(不想使用完整的回发)。

每次选中一个复选框,在代码隐藏中,如果需要,启用比较项的按钮,保存该复选框已在视图状态中检查并检查所选项目是否未达到最大值。如果达到最大项目,我禁用其余未选中的复选框(最大项目是一个限制,以避免用户选择更多无法在页面布局中显示的项目)。

这个伟大的工程,除了例如,当你去到2页,然后点击浏览器上的后退按钮。

当你点击后退按钮,所有被禁用的复选框,出现启用,用户可以选择更多的最大值。

如果我不使用复选框的更新面板,它可以很好地工作,它会记住已禁用的复选框,但每次选中复选框时我都不想执行完整的复原。

有什么办法可以解决这个问题吗?

非常感谢

回答

0

我发现的解决方案是使用除每个复选框外的HiddenField。 Hiddenfield有每个项目的ID。

然后我设置cookie与子项,每个子项包含每个选中复选框的ID。

终于在onload事件使用JavaScript我检索Cookie,并检查用户按下后退按钮后仍然未选中的复选框。

0

完美的解决方案,如果你在更新面板有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> 
+0

试图格式化你的代码 - 不是太成功;-)请编辑和改善 – kleopatra

+0

,并解释你做了什么。计算器目标si是教学法。 –