ASP.NET C#如何生成动态控件

时间:2016-05-20 06:36:18

标签: c# asp.net oracle

我正在使用asp.net c#,我想从数据库生成文本框。我的表中有4条记录,所以我想在运行时使用4个文本框。 但是我在登记Insepct Element时只收到一个文本框我收到了4个文本框,但它没有在我的页面上显示。

不知道哪里出错了。

我正在使用这样的代码

OracleConnection obj_Conn = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
    Table table = new Table();
    table.ID = "table1";
    string Query = "SELECT * FROM XXCUS.MASTER_VERIFICATION";
    OracleDataAdapter da = new OracleDataAdapter(Query, obj_Conn);
    //DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    da.Fill(dt);
    var Count = dt.Rows.Count;
    if (Count > 0)
    {
        TableRow row = new TableRow();
        TextBox txt = new TextBox();
        for (int i = 0; i < Count; i++)
        {
            TableCell cell = new TableCell();
            txt.ID = "txt" + i.ToString();
            cell.ID = "cell" + i.ToString();

            cell.Controls.Add(txt);

            row.Cells.Add(cell);
        }
        table.Rows.Add(row);
        dvGenerateCntrl.Controls.Add(table);
    }

并在Page Load

上调用此方法

2 个答案:

答案 0 :(得分:2)

将声明新TextBox的行放在for循环

    for (int i = 0; i < Count; i++)
    {
        TextBox txt = new TextBox();
        TableCell cell = new TableCell();
        txt.ID = "txt" + i.ToString();
        cell.ID = "cell" + i.ToString();

        cell.Controls.Add(txt);

        row.Cells.Add(cell);
    }

答案 1 :(得分:1)

首先调试您的代码并确保在datatable中获得4行并使用此代码。

    OracleConnection obj_Conn = new `OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["oracleConn"].ToString());`
    Table table = new Table();
    table.ID = "table1";
    string Query = "SELECT * FROM XXCUS.MASTER_VERIFICATION";
    OracleDataAdapter da = new OracleDataAdapter(Query, obj_Conn);
    //DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    da.Fill(dt);
    var Count = dt.Rows.Count;
    if (Count > 0)
    {
        TableRow row = new TableRow();
        TextBox txt = new TextBox();
        for (int i = 0; i < Count; i++)
        {
TextBox txt = new TextBox();            
TableCell cell = new TableCell();
            txt.ID = "txt" + i.ToString();
            cell.ID = "cell" + i.ToString();

            cell.Controls.Add(txt);

            row.Cells.Add(cell);
        }
        table.Rows.Add(row);
        dvGenerateCntrl.Controls.Add(table);
    }

在代码中,每次都不创建TextBox的对象。 我认为它会对你有帮助。