2011-08-20 12 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 'があれば、オブジェクトの"オブジェクトの番号、順序、および呼び出すコンストラクタのパラメータの型が一致する "オブジェクトを送ることができます。つまり、コントロールのコンストラクタです。 – kaveman

関連する問題