2010-12-19 9 views
5

मैं पृष्ठ लोड चरण में पृष्ठ के पीछे से कोड को जोड़ने की कोशिश कर रहा हूं:पृष्ठ लोड में प्रोग्रामेटिक रूप से पृष्ठ पर नियंत्रण कैसे जोड़ें?

foreach (FileInfo fi in dirInfo.GetFiles()) 
{ 
    HyperLink hl = new HyperLink(); 
    hl.ID = "Hyperlink" + i++; 
    hl.Text = fi.Name; 
    hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar; 
    Page.Controls.Add(hl); 
    Page.Controls.Add(new LiteralControl("<br/>")); 
} 

जो त्रुटि मैं प्राप्त कर रहा हूं वह Page.Controls.Add(hl) पर है और यहां स्पष्टीकरण है:

डेटाबैंड, इनिट, लोड, प्रीरेंडर या अनलोड चरणों के दौरान नियंत्रण संग्रह को संशोधित नहीं किया जा सकता है।

इस समस्या को ठीक करने के लिए मैं क्या कर सकता हूं? अग्रिम में धन्यवाद।

उत्तर

4

अपने स्वयं के कंटेनर संग्रह बनाएँ और करने के लिए पेज संग्रह को नियंत्रित करता है यह करने के लिए इन जोड़ने के लिए, के बजाय सीधे।

.aspx पर:

<asp:Panel id="links" runat="server" /> 

पीछे कोड में (मैं पृष्ठ लोड Init ईवेंट हैंडलर के बजाय उपयोग करने का सुझाव):

foreach (FileInfo fi in dirInfo.GetFiles()) 
{ 
    HyperLink hl = new HyperLink(); 
    hl.ID = "Hyperlink" + i++; 
    hl.Text = fi.Name; 
    hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar; 
    links.Controls.Add(hl); 
    links.Controls.Add(new LiteralControl("<br/>")); 
} 
+0

आपके त्वरित उत्तर के लिए धन्यवाद, इससे मुझे बहुत मदद मिली। छुट्टियां आनंददायक हों! – Laziale

0

Init() पृष्ठ की घटना में अपने नियंत्रण जोड़ें।

+3

प्रश्न पढ़ें। त्रुटि पाठ 'इनिट' का उल्लेख उन स्थानों में से एक है जहां यह संभव नहीं है। – Oded