2009-09-11 9 views
9

मैं उपयोगकर्ता नियंत्रण से एक क्लिक ईवेंट बढ़ाने और इसे शामिल पृष्ठ पर संभालने का प्रयास कर रहा हूं। मेरी समस्या यह है कि, जब मैं उपयोगकर्ता नियंत्रण पर 'imgstep1' बटन पर क्लिक करता हूं, तो imgstep1_click ईवेंट ट्रिगर्स के पीछे कोड और 'btnHandler' ईवेंट हमेशा शून्य होता है। इसलिए यह अभिभावक घटना को कॉल नहीं करता है।EventHandler शून्य

इस पर किसी भी मदद की सराहना की जाएगी।

मेरे उपयोगकर्ता नियंत्रण कोड है:

.ascx कोड:

<asp:ImageButton ImageUrl="./images/step1.gif" 
     ID="imgstep1" runat="server" 
     OnClick="imgstep1_Click"/> 

.ascx.cs कोड:

public delegate void OnImageButtonClick(); 
    public event OnImageButtonClick btnHandler; 

    protected void imgstep1_Click(object sender, ImageClickEventArgs e) 
    { 
     if (btnHandler != null) 
      btnHandler(); 
    } 

.aspx पेज कोड:

protected void Page_Load(object sender, EventArgs e) 
{ 
    ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler); 
} 

void ucStepHdr_btnHandler() 
{ 
    Response.Write ('test'); 
} 
+0

इस पूरे कोड है, या यह है कि "+ = नया ..." ब्लॉक का एक विशिष्ट "यदि पुनः लोड" प्रकार के अंदर लाइन? –

उत्तर

10

कोड काफी सरल सही ढंग से काम करने के लिए लग रहा है। बीटीएन हैंडलर शून्य होने का एकमात्र कारण यह हो सकता है क्योंकि एएसपीएक्स पेज में इवेंट पंजीकरण कोड नहीं कहा जाता है।

क्या कोई पोस्ट वापस है? क्या आप वाकई पेज लोड करने के दौरान ईवेंट को जोड़ रहे हैं ???

ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler); 
+0

हां! वह समस्या थी। मैं इसे बुद्धिमान (! IsPostBack) कोड बुला रहा था। एक बार मैं कोड के बाहर डाल यह काम करना शुरू किया। आपके सभी उत्तरों के लिए धन्यवाद दोस्तों। – jack

0

ऐसा लगता है कि यह काम करना चाहिए ... कर सकते हैं आप डीबगर में कोड के माध्यम से कदम उठाते हैं, और देखें कि जैसे ही आप इसे पेज_लोड में सेट करते हैं, ucStepHdr.btnHandler का मान क्या है? (बस एक अलग रूप में, पारंपरिक रूप से इन बल्कि भार से init में स्थापित कर रहे हैं, लेकिन इससे आपकी समस्या नहीं है।)

1

आप OnClick="imgstep1_Click" को हटा दें और आप अपने ascx.cs

protected ImageButton imgstep1; 

protected override void OnInit(EventArgs e) 
{ 
    this.imgstep1.Click += new ImageClickEventHandler(imgstep1_Click); 
} 

में रखते हैं क्या आपके घटना काम तारों की इस विधि?