2009-11-20 3 views
2

나는 folowing 문제가 있습니다. 코드 뒤에서 동적으로 많은 요소를 생성해야하는 페이지가 있습니다. 그것은 분명히 데이터베이스에서 전달되는 것에 달려 있지만, 요소의 수는 변할 수 있습니다. 그래서 그것이 정적 일 수는 없습니다. 내가 지금 무엇을 가지고ASP.NET AJAX Toolkit CalendarExtender가 작동하지 않습니다. C#

은 다음과 같습니다

내가 정적으로 만든 패널 : 코드에서 다음

<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

일반적으로 마크 업에 캘린더 익스텐더를 추가 할 경우 UniqueID이 아닌 및 TargetControlID을 해당 컨트롤의 ID으로 설정하면됩니다.

레이블과 같은 항목을 동적으로 추가 할 때 UniqueID/ClientID이 아닌 ID의 컨트롤로 설정하면 프레임 워크에서 렌더링시 작동합니다.

또한 대부분의 JavaScript 라이브러리는 name 특성보다는 컨트롤의 실제 ID를 사용하므로 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의 사용되어있는 텍스트 상자 및 이미지에 할당 달력, 그리고 그 일을 :] 스택 오버플로에 대한 많은 감사 :]

관련 문제