2011-08-20 3 views
1

자리 표시 자에 사용자 정의 컨트롤을 추가하려고합니다. 사용자 정의 컨트롤을 <li> userControl </li> 안에 넣은 다음 목록 항목을 정렬되지 않은 목록 <ul><li> 사용자 정의 컨트롤 </li></ul>에 배치 한 다음 순서가 지정되지 않은 목록을 자리 표시 자 phMain.Controls.Add (myUnorderedList)에 추가합니다. ... 코드 아래 : 나는 그것을 알아 낸자리 표시자를 사용하여 페이지에 동적으로 사용자 정의 컨트롤 추가

var myListItem = new HtmlGenericControl("li"); 
var preview = new UserControls_ChiotsPreview(); 
preview = (UserControls_ChiotsPreview)LoadControl(typeof(UserControls_ChiotsPreview), null); 
myListItem.Controls.Add(preview); 
myUnorderedList.Controls.Add(myListItem); 
placeholderMain.Controls.Add(myUnorderedList); 

답변

0

, 내가 페이지에 컨트롤을로드하고 null 값을 가지고 내 컨트롤의 원인이 된 생성자 논리를 호출 된 순서였다.

var myUnorderedList = new HtmlGenericControl("ul"); 
myUnorderedList.Attributes["class"] = "resultClass"; 
var counter = 0; 

foreach (var chiot in chiots) 
{ 
//create list item, can I put the user control inside of here? why not? 
var myListItem = new HtmlGenericControl("li"); 

//add user control to li 
var preview = (UserControls_ChiotsPreview)LoadControl("~/UserControls/ChiotsPreview.ascx"); 
preview.Name = chiot.Name; 
preview.MainPhoto = chiot.MainImage; 
preview.Breed = chiot.Breed; 
preview.ChampionSireDam = ResolveImage(chiot.ChampionSireDam); 
preview.ChampionBloodline = ResolveImage(chiot.ChampionBloodline); 
preview.Price = chiot.Price; 
preview.Details = chiot.Description; 

myListItem.Controls.Add(preview); 

//add li to ul 
myUnorderedList.Controls.Add(myListItem); 

//max column = 5 
counter += 1; 

//maximum 5 columns 
if (counter == 5 || chiots.Count == counter) 
{ 
try 
{ 
phMain.Controls.Add(myUnorderedList); 
+0

Page.LoadControl 메서드가 사용자 정의 컨트롤 생성자 값에 액세스 할 수 있으면 좋을 것입니다. – AnxiousdeV

+0

방금 ​​검색에서이 문제가 발생했습니다 ... 원래의 게시물에서'(UserControls_ChiotsPreview) LoadControl (typeof (UserControls_ChiotsPreview), null)에서와 같이 'Page.LoadControl'에 사용 된 오버로드를 알고 있습니다. 거기에'null '이 있으면, 객체의 "number, order, 그리고 호출 할 생성자의 매개 변수와 일치하는"객체를 보낼 수 있습니다. 즉, 컨트롤의 생성자입니다. – kaveman

관련 문제