簡體   English   中英

如何在 asp.net/webforms c# 中以動態方式創建運行時控件?

[英]How to dinamycally create runtime controls in asp.net/webforms c#?

我在具有這種結構的數據庫中有一個表:

  • 字段順序

  • 字段標簽

  • 字段名稱

  • 字段類型

  • 寬度

  • 高度

我想遍歷所有行並在我的頁面中創建控件,將它們放在經典表中 2 列 x X 行(每行一個控件)。

這是服務器端代碼:

 using (MySqlConnection db = new MySqlConnection(myAppConnectionString))
            {
                string sql = "SELECT * FROM myTable WHERE idtemplate =" + templateID.ToString() + " ORDER BY field_order";
                MySqlDataReader dr;
                MySqlCommand cmd = new MySqlCommand(sql,db);

                db.Open();

                dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        string field_label = dr["field_label"].ToString();
                        string field_name  = dr["field_name"].ToString();
                        string field_type = dr["field_type"].ToString();
                        string field_width = dr["width"].ToString();
                        string field_height = dr["height"].ToString();

                        switch (field_type)
                        {
                            case "Text":
                                Label lbl = new Label();
                                lbl.Text = field_label;
                                lbl.ID = "lbl" + field_name;
                                panelFields.Controls.Add(lbl);

                                TextBox txt = new TextBox();
                                txt.Text = "";
                                txt.ID = "txt" + field_name;
                                Unit ut = new Unit(field_width);
                                txt.Width = ut;
                                ut = new Unit(field_height);
                                txt.Height = ut;
                                panelFields.Controls.Add(txt);


                                break;
                            case "Number":
                                break;
                            case "Date":
                                break;
                            case "Time":
                                break;
                        }
                    }
                }

            }

使用panelFields.Controls.Add(myControl)我將每個控件添加到面板中但彼此相鄰。

所以我的問題是:

1- 如何在 2 列 x N 行的表格中添加控件?

2- 如果我以這種方式添加控件,我是否可以從服務器端訪問以保存 TextBox 值?

謝謝

我解決了使用 HTML 標簽向 myPanel 添加“文字”控件的問題。

喜歡:

myPanel.Controls.Add(new LiteralControl(""));

myPanel.Controls.Add(new LiteralControl(" "));

....

myPanel.Controls.Add(new LiteralControl(""));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM