2010-07-18 14 views
10

मुझे यह वेब नियंत्रण मिला है कि मैं गतिशील रूप से नियंत्रण जोड़ रहा हूं लेकिन अब आवश्यकता नियंत्रण के चारों ओर एक आदेशित सूची जोड़ना है।एएसपीनेट नियंत्रण के साथ एक अनियंत्रित सूची बनाना?

नियंत्रण रेंडर करने के लिए मैं 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)); 

    } 

करने के लिए नियंत्रण जोड़ने और यह है एचटीएमएल + 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> 

मैं कैसे सूची में नियंत्रण की स्थिति है आइटम? क्या मुझे समस्या से अलग-अलग संपर्क करने की आवश्यकता है?

उत्तर

11

बदलें इस लाइन:

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); 

संपादित करें:

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

यह कोड मुझे समझ में नहीं आता है; मुझे लगता है कि 'नियंत्रण। जोड़ें' रिटर्न 'शून्य' है, तो आप इसके परिणाम का तर्क के रूप में कैसे उपयोग कर सकते हैं? – Sam

+1

मैं नियंत्रण से किसी भी परिणाम का उपयोग करने का प्रयास नहीं कर रहा हूं। –

+0

जोड़ें ऐसा लगता है कि आप मेरे हैं; आप 'ol.Controls.Add' के तर्क के रूप में' Controls.Add' के परिणाम का उपयोग करने का प्रयास कर रहे हैं। आपका कोड मेरे लिए संकलित नहीं है। – Sam

7

मैं HtmlGenericControls का एक वृक्ष बनाने के लिए सुझाव है: http://msdn.microsoft.com/library/system.web.ui.htmlcontrols.htmlgenericcontrol.aspx

+0

इस वर्ग का उपयोग निश्चित रूप से जाने का तरीका है। यह न केवल स्वच्छ पठनीय प्रक्रियात्मक कोड के लिए बनाता है, यह आपको इतना आसान काम पूरा करने के लिए पागल लैम्ब्स को देखने से बचाता है। – afuzzyllama

+0

@afuzzyllama आपको किसी भी भेड़ का बच्चा उपयोग करने की ज़रूरत नहीं है। यदि आप चाहें तो बस एक नियमित foreach का उपयोग करें। सभी लैम्ब्डा सिंटैक्स आपको एक समय के उपयोग चर के समूह के साथ कोड लिखने से बचा रहा है। – MiniRagnarok

संबंधित मुद्दे