在c# .net中动态地向绑定复选框添加文本框
本文关键字:复选框 绑定 添加 文本 net 动态 | 更新日期: 2023-09-27 18:08:39
我有一个。net web应用程序,c#后端,sql server数据层。我有一个asp:复选框列表,我通过直接数据绑定从存储过程填充:
ASP.net
<asp:CheckBoxList ID="cblMyPlans" runat="server" RepeatColumns="4">
</asp:CheckBoxList>
c# SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConn"].ToString());
SqlCommand cmd = new SqlCommand("SelectMyPlans", conn);
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
using(SqlDataReader dr = cmd.ExecuteReader()) {
while (dr.Read()) {
cblMyPlans.Items.Add(new ListItem(dr["Name"].ToString(), dr["PlanID"].ToString()));
}
}
conn.Close();
conn.Dispose();
我不确定这是否可能,但是基于来自SqlDataReader
的某个标志,我需要动态地向满足该标志的cbl的每个项目添加一个小textbox
。
databind
时如何动态添加asp:TextBox
您可以动态地添加带有"manual"元素的CheckBoxList
此代码将创建与CheckBoxList相同的html,但您可以根据需要添加其他元素…
背后的代码:
public void FillPH()
{
var MyList = new List<ListItem>
{
new ListItem("One", "1"),
new ListItem("Two", "2"),
new ListItem("Three", "3")
};
Table myTable = new Table();
foreach (var item in MyList)
{
//Create new checkbox
CheckBox CB = new CheckBox();
CB.Text = item.Text;
CB.ID = item.Value;
//Create tablr row and td, then adds them accordignly
TableRow TR = new TableRow();
TableCell TD = new TableCell();
TD.Controls.Add(CB);
TR.Controls.Add(TD);
//IF <YOUR FLAG GOES HERE>-->
if (item.Value == "2")
{
//Create your input element and place it in a new Table cell (TD2)
TextBox TB = new TextBox();
TB.ID = string.Format("tb_{0}", item.Value);
TableCell TD2 = new TableCell();
TD2.Controls.Add(TB);
TR.Controls.Add(TD2);
}
myTable.Controls.Add(TR);
}
fillMe.Controls.Add(myTable);
}
前:
<div>
<asp:PlaceHolder ID="fillMe" runat="server"></asp:PlaceHolder>
</div>