动态创建ASP Calendar控件

时间:2013-11-16 07:09:44

标签: c# asp.net .net calendar

根据从数据库返回的数据,使用以下代码将许多文本框和复选框动态添加到我的页面:

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。

1 个答案:

答案 0 :(得分:1)

要回答您的问题,您应该在用户控件中设计日历,文本框,按钮等功能。然后在循环中,只需使用简单的LoadControl(“〜/ MyControl.ascx”)调用将该控件添加到动态控件中。

更进一步,你应该考虑使用asp:Repeater控件。它会立即执行您手动执行的所有操作:循环数据并创建动态控件。这样做需要花费更少的精力,因为您可以使用ASPX设计器将行设计为模板,而不是编写大量代码。