在ASP .NET中保留表数据

时间:2012-02-17 01:37:02

标签: asp.net

我动态填充表格,其中包含一个带有与之关联的ID的复选框,然后将其显示给用户。我没有显示部分的问题。 在用户检查了一些指定的复选框并点击提交按钮后,我想得到他的选择,检查的Checkbox及其相关的Id,但在回发期间,我的表既没有我动态添加的任何行,也没有用户的选择。非常感谢任何帮助。

干杯 Ip Doh

我的aspx页面如下

<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true"   runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Label ID="dummyLabel" runat="server" Text="Label"></asp:Label>
        <asp:Button ID="submitButton"  onclick="async_Click" runat="server" Text="Submit" />

         <asp:Table ID="usrTable"  EnableViewState="true" runat="server">
        <asp:TableHeaderRow>
            <asp:TableHeaderCell Text="Id"/>
            <asp:TableHeaderCell Text="Customer Name"/>
        </asp:TableHeaderRow>
    </asp:Table>
    </ContentTemplate>

</asp:UpdatePanel>


我在代码文件中有以下内容

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CreateTable();
        }
if (IsPostBack)
        {
            List<int> choices = GetUserChoices();

            //Do Something with user choices
        }



    }


protected List<int> GetUserChoices()
    {
        List<int> choices = new List<int>();
        foreach (TableRow row in usrTable.Rows)
        {
            CheckBox cb = row.Controls[0] as CheckBox;

            if ((cb != null) && (cb.Checked))
            {
                choices.Add(int.Parse(cb.Text));
            }
        }

        return choices;
    }

    void CreateTable()
    {
        dummyLabel.Text = DateTime.Now.ToString();
        for (int i = 0; i < 3; i++)
        {
            TableCell cell1 = new TableCell();            
            CheckBox cb = new CheckBox();
            cb.Text = i.ToString();
            cb.AutoPostBack = true;
            cb.EnableViewState = true;
            cell1.Controls.Add(cb);

            TableCell cell2 = new TableCell();
            cell2.Text = String.Format("Clm : {0} - Row : {1}", 2, i);

            TableRow row = new TableRow();
            row.Cells.Add(cell1);
            row.Cells.Add(cell2);

            usrTable.Rows.Add(row);
        }
    }

标签值是持久的,而我的表没有我添加的任何行。

1 个答案:

答案 0 :(得分:0)

doh,我忘了设置CheckBox控件的id。在回发时设置相同的ID允许使用用户的选择更新CheckBox状态。

void CreateTable()
        {
            dummyLabel.Text = DateTime.Now.ToString();
            for (int i = 0; i < 3; i++)
            {
                TableCell cell1 = new TableCell();            
                CheckBox cb = new CheckBox();
                cb.Text = i.ToString();
                cb.AutoPostBack = true;
                cb.EnableViewState = true;
                cb.ID =  i.ToString();
                cell1.Controls.Add(cb);

                TableCell cell2 = new TableCell();
                cell2.Text = String.Format("Clm : {0} - Row : {1}", 2, i);

                TableRow row = new TableRow();
                row.Cells.Add(cell1);
                row.Cells.Add(cell2);

                usrTable.Rows.Add(row);
            }
        }