2009-11-20 73 views
2

我有一个如下问题: 我有一个页面,我需要从后面的代码动态地创建大量元素。它显然取决于从数据库传递的内容,但元素的数量可能会发生变化,这就是为什么我无法做到静态。ASP.NET AJAX工具包CalendarExtender不工作C#

我在看什么,就是:

我已经静态创建PANEL:

<asp:Panel ID="pFullInfo_lStartDateStr" runat="server"></asp:Panel> 

然后在后面的代码,我创建其他控件,并将其添加到我的标签。问题我有是,点击后iEditStartDateCalendar应该出现的CalendarExtender不弹出:(我看不到我在做什么错在这里?任何帮助吗?!?!

// StartDate 
Label lStartDateSite = new Label(); 
pFullInfo_lStartDateStr.Controls.Add(lStartDateSite); 

Label lStartDate = new Label(); 
pFullInfo_lStartDateStr.Controls.Add(lStartDate); 

ImageButton ibEditStartDate = new ImageButton(); 
ibEditStartDate.ID = "ibEditStartDate_" + this_site_id; 
pFullInfo_lStartDateStr.Controls.Add(ibEditStartDate); 

TextBox tbEditStartDate = new TextBox(); 
pFullInfo_lStartDateStr.Controls.Add(tbEditStartDate); 

Image iEditStartDateCalendar = new Image(); 
iEditStartDateCalendar.ID = "iEditStartDateCalendar"; 
iEditStartDateCalendar.ImageUrl = "~/i/small/calendar.png"; 
iEditStartDateCalendar.ImageAlign = ImageAlign.AbsMiddle; 
pFullInfo_lStartDateStr.Controls.Add(iEditStartDateCalendar); 

CalendarExtender ceEditStartDate = new CalendarExtender(); 
ceEditStartDate.ID = "ceEditStartDate_" + this_site_id; 
ceEditStartDate.PopupButtonID = iEditStartDateCalendar.UniqueID; 
ceEditStartDate.TargetControlID = tbEditStartDate.UniqueID; 
ceEditStartDate.PopupPosition = CalendarPosition.Right; 
pFullInfo_lStartDateStr.Controls.Add(ceEditStartDate); 

回答

1

通常,在标记中添加日历扩展程序时,您只需将PopupButtonIDTargetControlID设置为这些控件的ID,而不是UniqueID

时动态添加的东西如标签,你AssociatedControlID设置为控制,而不是UniqueID/ClientIDID和框架的作品出来的渲染时间。

另外,大多数JavaScript库更喜欢使用控件的实际id,而不是name属性,所以应该使用ClientID来代替。

1

我发现。该解决方案 问题是用“的UniqueID”我是路过 正确的解决办法是在这里:。


// StartDate 
Label lStartDateSite = new Label(); 
pFullInfo_lStartDateStr.Controls.Add(lStartDateSite); 

Label lStartDate = new Label(); 
pFullInfo_lStartDateStr.Controls.Add(lStartDate); 

ImageButton ibEditStartDate = new ImageButton(); 
ibEditStartDate.ID = "ibEditStartDate_" + this_site_id; 
pFullInfo_lStartDateStr.Controls.Add(ibEditStartDate); 

TextBox tbEditStartDate = new TextBox(); 
pFullInfo_lStartDateStr.Controls.Add(tbEditStartDate); 
tbEditStartDate.ID = "tbEditStartDate_" + this_site_id; 

Image iEditStartDateCalendar = new Image(); 
iEditStartDateCalendar.ID = "iEditStartDateCalendar"; 
iEditStartDateCalendar.ImageUrl = "~/i/small/calendar.png"; 
iEditStartDateCalendar.ImageAlign = ImageAlign.AbsMiddle; 
pFullInfo_lStartDateStr.Controls.Add(iEditStartDateCalendar); 

CalendarExtender ceEditStartDate = new CalendarExtender(); 
ceEditStartDate.ID = "ceEditStartDate_" + this_site_id; 
ceEditStartDate.PopupButtonID = iEditStartDateCalendar.ID; 
ceEditStartDate.TargetControlID = tbEditStartDate.ID; 
ceEditStartDate.PopupPosition = CalendarPosition.Right; 
pFullInfo_lStartDateStr.Controls.Add(ceEditStartDate); 

所以我做了什么basicaly,我分配一个ID对它们被用于文本框和图像日历,并工作:] 非常感谢堆栈溢出:]