处理asp.net中的动态控件(findcontrol)

时间:2012-09-24 06:45:40

标签: c# asp.net dynamic

我使用了更新面板和脚本管理器向表中添加新行,每行有4个文本框。现在我如何处理这个文本框并使用它们,如果它们已被添加到表!

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Table ID="Table5" runat="server" Width="100%">
                    <asp:TableHeaderRow>
                        <asp:TableHeaderCell ID="TableHeaderCell1" runat="server">1</asp:TableHeaderCell><asp:TableHeaderCell
                            ID="TableHeaderCell2" runat="server">2</asp:TableHeaderCell><asp:TableHeaderCell
                                ID="TableHeaderCell3" runat="server">3</asp:TableHeaderCell><asp:TableHeaderCell
                                    ID="TableHeaderCell4" runat="server">4</asp:TableHeaderCell></asp:TableHeaderRow>
                    <asp:TableRow>
                    </asp:TableRow>
                </asp:Table>
                <center>
                    <asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton1_Click"
                    ImageUrl="~/Images/add.jpg" ValidationGroup="AddSavabegh" /></center>
                <br />
            </ContentTemplate>
        </asp:UpdatePanel>
代码背后的代码:

   private void GenerateTable(int rowsCount)
    {
        const int colsCount = 4;
        for (int i = 0; i < rowsCount; i++)
        {
            TableRow row = new TableRow();
            for (int j = 0; j < colsCount; j++)
            {
                TableCell cell = new TableCell();
                TextBox tb = new TextBox();
                tb.ID = "txtSabeghe_" + (i+1) + "Col_" + (j+1);
                cell.Controls.Add(tb);
                row.Cells.Add(cell);
            }
            Table5.Rows.Add(row);
        }
        SetPreviousData(rowsCount, colsCount);
        rowsCount++;
        ViewState["RowsCount"] = rowsCount;
    }

我使用了它,但它返回null:

protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; i < 4; i++)
            {
                TextBox tb = (TextBox)UpdatePanel1.FindControl("txtSabeghe_" + (i+1) + "Col_" + (j+1));
                Response.Write(tb.Text);
            }
        } 

    }

1 个答案:

答案 0 :(得分:0)

GenerateTable ..

之前回拨Button1点击事件时,请致电FindControl()