C# 将Ajax CalendarExtender添加到ASP.NET C中的动态文本框#
有没有办法将Ajax CalendarExtender添加到动态ASP.NET文本框控件中?基本上,我正在尝试做以下工作:C# 将Ajax CalendarExtender添加到ASP.NET C中的动态文本框#,c#,asp.net,.net,ajax,ajaxcontroltoolkit,C#,Asp.net,.net,Ajax,Ajaxcontroltoolkit,有没有办法将Ajax CalendarExtender添加到动态ASP.NET文本框控件中?基本上,我正在尝试做以下工作: protected void Page_Load(object sender, EventArgs e) { database.DB myDB = new database.DB(); DataTable myVars = new DataTable(); string myTopicID = (string
protected void Page_Load(object sender, EventArgs e)
{
database.DB myDB = new database.DB();
DataTable myVars = new DataTable();
string myTopicID = (string)Session["myTopicID"];
bool myInvite = (bool)Session["myInvite"];
bool mySig = (bool)Session["mySig"];
string myLogo = (string)Session["myLogo"];
string myImage = (string)Session["myImage"];
string myLanguage = (string)Session["myLanguage"];
myVars = myDB.getVarFields(myTopicID, myLanguage);
AjaxControlToolkit.CalendarExtender calenderDate = new AjaxControlToolkit.CalendarExtender();
for (int i = 0; i < myVars.Rows.Count; i++)
{
Label label = new Label();
TextBox text = new TextBox();
label.Text = Convert.ToString(myVars.Rows[i]["varName"]);
myPlaceHolder.Controls.Add(label);
text.ID = Convert.ToString(myVars.Rows[i]["varName"]);
myPlaceHolder.Controls.Add(new LiteralControl(" "));
myPlaceHolder.Controls.Add(text);
if (Convert.ToString(myVars.Rows[i]["varName"]).Contains("Date:"))
{
calenderDate.TargetControlID = "ContentPlaceHolder1_" + text.ID;
myPlaceHolder.Controls.Add(calenderDate);
}
myPlaceHolder.Controls.Add(new LiteralControl("<br />"));
}
}
The TargetControlID of '' is not valid. A control with ID 'ContentPlaceHolder1_Date:' could not be found.
我想这是有道理的,因为实际的文本框还不存在。但是有办法解决这个问题吗?我认为ASP.NET将足够聪明,可以处理它。如果您只使用text.ID,您不需要添加ContentPlaceholder 1_uuu前缀 如果这不起作用,可以使用TextBox的ClientIdMode属性将其设置为静态,那么text.ID肯定会起作用 以下代码在本地为我工作:
AjaxControlToolkit.CalendarExtender calenderDate = new AjaxControlToolkit.CalendarExtender();
for (int i = 0; i < 2; i++)
{
Label label = new Label();
TextBox text = new TextBox();
label.Text = Convert.ToString("varName");
ph1.Controls.Add(label);
text.ID = "myId" + i;
ph1.Controls.Add(new LiteralControl(" "));
ph1.Controls.Add(text);
calenderDate.TargetControlID = text.ID;
ph1.Controls.Add(calenderDate);
ph1.Controls.Add(new LiteralControl("<br />"));
}
AjaxControlToolkit.CalendarExtender CalendarDate=新的AjaxControlToolkit.CalendarExtender();
对于(int i=0;i<2;i++)
{
标签=新标签();
TextBox text=新建TextBox();
label.Text=Convert.ToString(“varName”);
ph1.对照品.添加(标签);
text.ID=“myId”+i;
ph1.Controls.Add(新的LiteralControl(“”);
ph1.控件。添加(文本);
calenderDate.TargetControlID=text.ID;
ph1.对照品。添加(压延日期);
ph1.Controls.Add(新的LiteralControl(“
”);
}
我认为您可能需要调查的唯一区别是:我使用的是Nuget最新的ControlToolkit,我使用的是ToolkitScriptManager,而不是默认的ScriptManager。有一件事可能对您很重要,那就是确保text.ID是唯一的。这仍然会产生相同的错误,基本上是:“”的TargetControlID无效。找不到ID为“Date:”的控件。感谢您的帮助,Garrison。我用普通的脚本管理器让它工作。我的问题是,我必须从ID中删除“:”。一旦我这样做,它就会起作用。谢谢。我知道这已经有18个月了,但它为我解决了一个问题。回答:谢谢你,加里森!