在Page_PreRender中回发后检查和取消选中复选框

时间:2013-05-16 09:50:56

标签: c# asp.net

我有一个更新面板中的动态表。表的数据从后面的代码填充。每行都有一个复选框。回发后,如果需要检查复选框,则会重新检查。我有所有需要在列表中查找的项目。此列表在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>

1 个答案:

答案 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>