2010-07-18 22 views
10

Dinamik olarak denetimleri eklediğim bu web denetimini aldım ancak şimdi gereksinim denetimlerin etrafında sıralı bir liste eklemektir. Asp.net denetimleriyle sırasız liste oluşturma?

Ben ControlsCollection

protected void Page_Load(object sender, EventArgs e) 
    { 
     var document = XDocument.Load(@"http://localhost:49179/XML/Templatek.xml"); 
     var builder = ObjectFactory.GetInstance<IControlBuilder>(); 
     var controls =builder.BuildControls(document); 
     controls.ToList().ForEach(c => Controls.Add(c)); 

    } 

denetimleri ekleyin Ve bu denetimleri işlemek için ben inşa etmek isteyen html + aspnet ctrls:

<fieldset> 
    <ol> 
     <li> 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
     </li> 
     <li> 
      <asp:TextBox runat="server" ID="TextBox1"></asp:TextBox> 
     </li> 
    </ol> 
    </fieldset> 

ben listedeki kontrolleri konumlandırmak nasıl ürün? Soruna farklı şekilde yaklaşmam gerekir mi?

cevap

11

Değişim bu satırı: Bu satırların için

controls.ToList().ForEach(c => Controls.Add(c)); 

:

Control ol = new HtmlGenericControl("ol"); 
controls.ToList().ForEach(c => ol.Controls.Add(new HtmlGenericControl("li").Controls.Add(c))); 
Controls.Add(ol); 

DÜZENLEME:

Control ol = new HtmlGenericControl("ol"); 
    controls.ToList().ForEach(c => 
            { 
             var li = new HtmlGenericControl("li"); 
             li.Controls.Add(c); 
             ol.Controls.Add(li); 
            }); 
    Controls.Add(ol); 
+0

Bu kod bana mantıklı gelmiyor; Ben 'Controls.Add' 'void' döndürür, bu yüzden sonucunu argüman olarak nasıl kullanırsınız? – Sam

+1

Controls.Add –

+0

'dan herhangi bir sonuç kullanmaya çalışmadım. 'Controls.Add' sonucunu 'ol.Controls.Add' argümanı olarak kullanmaya çalışıyorsunuz. Kodun benim için derleme değil. – Sam

7

Ben HtmlGenericControls bir ağaç oluşturmak için öneririm: http://msdn.microsoft.com/library/system.web.ui.htmlcontrols.htmlgenericcontrol.aspx

+0

Bu sınıfı kullanmak kesinlikle gitmek için bir yoldur. Temiz okunabilir prosedür kodu yapmakla kalmaz, basit bir görevi tamamlamak için çılgın lambdalara bakmanızı sağlar. – afuzzyllama

+0

@afuzzyllama Herhangi bir lambda kullanmak zorunda değilsiniz. İsterseniz düzenli bir foreach kullanın. Tüm lambda sözdizimi yapmak, bir kerelik kullanım değişkenleri ile sizi koddan kaydetmektir. – MiniRagnarok

İlgili konular