我有一个更新面板中的动态表。表的数据从后面的代码填充。每行都有一个复选框。回发后,如果需要检查复选框,则会重新检查。我有所有需要在列表中查找的项目。此列表在PreRenderer中进行检查。如果页面第一次打开,这可以正常工作。
void Page_PreRender(object sender, EventArgs e)
{
foreach (string CheckedeID in cboCheckedList)
{
CheckBox checkedBox = (CheckBox)tbl_main.FindControl(CheckedeID);
checkedBox.Checked = true;
}
}
回发后,如果单击按钮更改已检查状态。新ID将添加到cboCheckedList。我可以看到当我调试项目在列表中时,新项目也会被检查。但是当我返回页面时,不会选中复选框。
我是否将复选框设置在错误的位置? 我应该在哪里设置复选框以便保持检查状态?
updatepanel中表格的代码:
<asp:UpdatePanel runat="server" ID="UpdatePanel2" UpdateMode="Conditional">
<ContentTemplate>
<asp:Table runat="server" ID="Table1" BorderStyle="Solid" BorderWidth="2" GridLines="Both" BackColor="White" class="tablesorter">
<asp:TableHeaderRow ID="TableHeaderRow2" runat="server">
<asp:TableHeaderCell BackColor="#CEE3F6" ForeColor="White" Wrap="false" Width="50px"
HorizontalAlign="Center" CssClass="NoImage">
</asp:TableHeaderCell>
....
</asp:TableHeaderRow>
</asp:Table>
</ContentTemplate>
</asp:UpdatePanel>
答案 0 :(得分:0)
从更新面板中删除UpdateMode =“Conditional”就可以了。
<asp:UpdatePanel runat="server" ID="UpdatePanel2">
<ContentTemplate>
<asp:Table runat="server" ID="Table1" BorderStyle="Solid" BorderWidth="2" GridLines="Both" BackColor="White" class="tablesorter">
<asp:TableHeaderRow ID="TableHeaderRow2" runat="server">
<asp:TableHeaderCell BackColor="#CEE3F6" ForeColor="White" Wrap="false" Width="50px"
HorizontalAlign="Center" CssClass="NoImage">
</asp:TableHeaderCell>
....
</asp:TableHeaderRow>
</asp:Table>
</ContentTemplate>
</asp:UpdatePanel>