2009-09-05 21 views
8

यह मुझे पागल कर रहा है।एएसपी.नेट उपयोगकर्ता नियंत्रण: पृष्ठ_लोड संपत्ति से पहले आग लगती है

मैं एक बहुत ही सरल उपयोगकर्ता नियंत्रण होता है:

public int? ImageId {set; get;} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    ... do something with ImageId... 
} 

और फिर मैं UpdatePanel के भीतर ListView के साथ पृष्ठ पर इस पर नियंत्रण रख:

<asp:ListView ID="ListViewImages" runat="server" DataSourceID="src"> 
    <LayoutTemplate> 
    <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
    </LayoutTemplate> 
    <ItemTemplate> 
    <My:MyControl ImageId='<%# Eval("Id") %>' ID="cipPreview" runat="server" /> 
    </ItemTemplate> 
</asp:ListView> 

समस्या ASP.NET सेट से पहले Page_Load आग है ImageId। डीबगर की मदद से मुझे पता चला कि किसी कारण से MyControl आईएसईटी में ImageId है, लेकिन पेज_लोड के प्रसंस्करण के बाद ही ऐसा होता है। क्या गलत है?

उत्तर

9

ऐसा शायद इसलिए है क्योंकि ListView पर बाध्यकारी डेटा पेज_लोड लोड के बाद होता है, इसलिए आपकी संपत्ति उस बिंदु पर सेट नहीं होती है। आप अपने कोड को प्रीरेंडर ईवेंट में ले जा सकते हैं क्योंकि इसे डेटा बाइंडिंग पूरा होने के बाद कहा जाता है।

अधिक जानकारी MSDN के अनुसार:

पूर्वप्रस्तुत - इससे पहले कि यह घटना होती है:

  • पृष्ठ वस्तु प्रत्येक नियंत्रण के लिए और पेज के लिए EnsureChildControls कहता है।
  • प्रत्येक डेटा बाध्य नियंत्रण जिसका डेटासोर्सिड प्रॉपर्टी सेट है उसे डेटाबंड विधि कहते हैं।
+0

धन्यवाद। प्रीरेंडर मेरे लिए काम करता है। –

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