【发布时间】:2019-12-06 12:34:07
【问题描述】:
我在数据库中有一个具有这种结构的表:
field_order
field_label
字段名称
field_type
宽度
身高
我想遍历所有行并在我的页面中创建控件,将它们放在经典表中 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 值?
谢谢
【问题讨论】:
-
你似乎知道#1,然后#2 也是。您需要使用带有 ID 的
myPanel.FindControl。 -
另外,
<asp:PlaceHolder>是动态添加控件的好元素。参考:docs.microsoft.com/en-us/dotnet/api/…