根据从数据库返回的数据,使用以下代码将许多文本框和复选框动态添加到我的页面:
int counter = 0;
foreach (DataRow dr in dsData.Tables[0].Rows){
CheckBox chk_valid = new CheckBox();
chk_valid.Enabled = true;
chk_valid.ID = "dynamicchk" + counter.ToString();
TextBox txt_task = new TextBox();
txt_task.Enabled = true;
txt_task.Text = dr[0].ToString();
txt_task.Width = 300;
txt_task.TextMode = TextBoxMode.MultiLine;
txt_task.ID = "dynamictask" + counter.ToString();
TextBox txt_id = new TextBox();
txt_id.Enabled = true;
txt_id.Text = "ID.";
txt_id.Width = 90;
txt_id.ID = "dynamicid" + counter.ToString();
TextBox txt_email = new TextBox();
txt_email.Enabled = true;
txt_email.Text = "E-mail Address";
txt_email.Width = 150;
txt_email.ID = "dynamicemail" + counter.ToString();
dynamic_controls_holder.Controls.Add(chk_valid);
dynamic_controls_holder.Controls.Add(new LiteralControl(" "));
dynamic_controls_holder.Controls.Add(txt_task);
dynamic_controls_holder.Controls.Add(new LiteralControl(" "));
dynamic_controls_holder.Controls.Add(txt_id);
dynamic_controls_holder.Controls.Add(new LiteralControl(" "));
dynamic_controls_holder.Controls.Add(txt_email);
dynamic_controls_holder.Controls.Add(new LiteralControl("<br /><br />"));
counter += 1;
}
现在,我还需要动态添加日历控件(文本框前面应该有一个按钮,每行都有复选框;点击该按钮时,应该显示日历。从日历中选择日期时,文本框值应更改为所选日期。)
通常,如果我使用jQuery UI,这将很容易,但我的限制是在我工作的环境中,我不能使用jQuery UI或任何其他ajax日历。我 使用asp:calendar。
答案 0 :(得分:1)
要回答您的问题,您应该在用户控件中设计日历,文本框,按钮等功能。然后在循环中,只需使用简单的LoadControl(“〜/ MyControl.ascx”)调用将该控件添加到动态控件中。
更进一步,你应该考虑使用asp:Repeater控件。它会立即执行您手动执行的所有操作:循环数据并创建动态控件。这样做需要花费更少的精力,因为您可以使用ASPX设计器将行设计为模板,而不是编写大量代码。