2012-05-01 12 views

答えて

3

ここにあなたが行く:

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
      PlaceHolder pl = e.Item.FindControl("PlaceHolder1") as PlaceHolder; 
      if (pl != null) 
      { 
       HtmlGenericControl div1 = new HtmlGenericControl("div"); 
       div1.InnerHtml = "Hello"; 
       pl.Controls.Add(div1); 
      } 
    } 
} 
+0

これは、単純な「PlaceHolder」コントロールでは機能しますが、リピーター内では機能しません。 –

+1

'Item'が' ListItemType.Item'か 'ListItemType.AlternatingItem'であるかどうか確認します –

+0

良い点ティム! – MUG4N

0

動的Repeaterコントロール内PlaceHolder制御にdivを追加するには、RepeaterItemDataBoundイベントを使用する必要があります。

ItemDataBoundの方法では、PlaceHolderコントロールを見つける必要があります。最初にItemTypeListItemType.ItemまたはListItemType.AlternatingItemであるかどうかを最初に確認します。 MUG4Nを示唆しているよう

PlaceHolder ph = (PlaceHolder) e.Item.FindControl("PlaceHolderControl1"); 

その後、あなたはdivを追加することができます。

HtmlGenericControl div1 = new HtmlGenericControl("div"); 
div1.InnerHtml = "Hello"; 
div1.Attributes.Add("class", "classname"); 
div1.Attributes.Add("style", "top: 10px; left: 20px;"); 
ph.Controls.Add(div1); 

これはページ上の<div>としてレンダリングするが、より多くの「.NET」

あるとしてちょうどまた ph.Controls.Add(div1);

までdiv1 = new HtmlGenericControl("div");から繰り返し、あなたは<asp:Panel>コントロールを追加することができ、別のdivを追加するには

Panel panel1 = new Panel(); 

次に、これにコントロール<asp:Literal>を追加します。

Literal literal1 = new Literal() { Text = "Hello" }; 
panel1.Controls.Add(literal1); 
ph.Controls.Add(panel1); 
+0

そのdivにクラスを追加することは可能ですか? –

+0

'HtmlGenericControl'の方法で生成されたdivにクラスを追加するには、' div1.Attributes.Add( "class"、 "classname"); '' Panel'オプションを使用している場合は、 'panel1.CssClass =" classname ";' –

+0

divの左上のスタイルをどのように追加できますか? –

関連する問題