0

我有一个位于更新面板中的动态表。表格的数据从后面的代码中填充。在每一行中都有一个复选框。回发后,如果需要检查复选框,则会重新检查它们。我有一个列表中需要检查的所有项目。此列表在 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。我可以在调试时看到该项目在列表中,并且新项目也被检查。但是当我返回该页面时,未选中该复选框。

我是否将复选框设置在错误的位置?我应该在哪里设置复选框以使其保持选中状态?

更新面板中表格的代码:

<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>
4

1 回答 1

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>
于 2013-05-16T15:20:20.240 回答