How do I create a table with my dynamically created textboxes?

依然范特西╮ 提交于 2019-12-13 04:14:25

问题


In this project I am using a users input to create textboxes dynamically:

        int ReqPO = Convert.ToInt32(txtReqPONum.Text);
        int n = ReqPO;
        for (int i = 0; i < n; i++)
        {
            TextBox MyTextBox = new TextBox();
            //Assigning the textbox ID name 
            MyTextBox.ID = "txtPOAmount" + "" + ViewState["num"] + i;
            this.Form.Controls.Add(MyTextBox);
        }

Edited Here is where I got which is not too far. Now Im just getting tons of errors

Table table1 = new Table();
        TableRow tr = null;
        TableCell tc = null;

        int ReqPO = Convert.ToInt32(txtReqPONum.Text);
        int n = ReqPO;

        for (int a = 0; a < n; a++) 
        {
           tr = new TableRow();

                for (int b = 0; b < n; b++)
                {
                    TextBox MyTextBox = new TextBox();

                    for (int c = 0; c < 3; c++)
                    {

                        tc = new TableCell();
                        table1.Rows.Add(tc);
                    }

                    //Assigning the textbox ID name 
                    MyTextBox.ID = "txtPOAmount" + "" + ViewState["num"] + b;
                    this.Form.Controls.Add(MyTextBox);
                }

                table1.Rows.Add(tr);
        }

        this.Form.Controls.Add(table1);

The problem is that I am using it in a wizard and I want to display the new textbox fields that appear in a table in their own rows. Currently they are displaying side by side below the asp:wizard previous and next buttons.


回答1:


If you want to display dynamic textboxes in a table, then just create the HTML table dynamically. Create TR (rows), then TD (cells), then create the textbox, add it to cell, then add cell to row, row to table and table to whatever control you want to place it in.

If you are creating the HTML table in your web page, then just adding the runat="server" and giving it an ID will make it visible at the server side and you'll be able to manipulate it just like any other control.

In other words, don't add controls to the Form, add it to particular parent control.

<asp:Wizard runat="server">
    <WizardSteps>
        <asp:WizardStep>
            <table runat="server" id="tblTextBoxes">

            </table>
        </asp:WizardStep>
    </WizardSteps>
</asp:Wizard>

tblTextBoxes.Controls.Add(new TextBox() {ID = "txtNewTextBox", Text = "Text of new control"});

(the code above is for example only, you can't add TextBox directly to the table, but you can to TD within TR tag).



来源:https://stackoverflow.com/questions/19184149/how-do-i-create-a-table-with-my-dynamically-created-textboxes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!