2009-12-18 8 views
6

मुझे एहसास है कि आप एएसपीएक्स पेज (यानी ऑनक्लिक = "बटन_Cलिक") पर अपनी विशेषता जोड़कर एक फॉर्मव्यू के अंदर एक बच्चे के नियंत्रण में एक ईवेंट हैंडलर को घोषित कर सकते हैं, लेकिन अगर मैं ऐसा करना चाहता हूं प्रोग्रामेटिक रूप से, मैं इसके बारे में कैसे जाउंगा? यह नियंत्रण फॉर्मव्यू के माध्यम से नहीं मिलेगा। पेज के इनिट या लोड इवेंट्स में फाइंडकंट्रोल, इसलिए इसे उन चरणों में असाइन नहीं किया जा सकता है। फॉर्मव्यू की डेटाबाउंड घटना आपको नियंत्रण ढूंढने की अनुमति देगी, लेकिन अनुचित है, क्योंकि यह केवल एक बार होता है, और फिर घटना हमेशा बाध्य नहीं होगी, और यह आग नहीं होगी। मैं नहीं पूछ रहा हूं क्योंकि मैं इसके चारों ओर नहीं जा सकता, मैं सिर्फ यह जानना चाहता था कि यह कैसे किया जा सकता है।प्रोग्राम के अंदर प्रोग्राम को व्यावहारिक रूप से फॉर्म के अंदर फॉर्मूज़

चीयर्स।

+0

मुझे वास्तव में यह जानना अच्छा लगेगा, क्योंकि मुझे कुछ गतिशील रूप से लोड किए गए उपयोगकर्ता नियंत्रणों और उनकी घटनाओं के लिए बाध्यकारी समस्या हो रही थी। – rossipedia

+0

जोड़ा गया ईवेंट-हैंडलिंग टैग – denny

उत्तर

1

सी # में यह पूरा किया गया है:
this.btnProcess.Click + = new EventHandler (btnProcess_Click);

+0

मैं कोड की उस पंक्ति के बारे में बात नहीं कर रहा हूं। मैं फॉर्मव्यू के अंदर नियंत्रण को पकड़ने के लिए FindControl का उपयोग करने के आधार पर कोड की उस पंक्ति को कहां रखना है, इस बारे में बात कर रहा हूं – Matt

1

क्या आपने प्रीरेंडर की कोशिश की है? मुझे लगता है कि बहुत देर हो चुकी है, लेकिन मुझे आश्चर्य है कि यह आपकी पोस्ट में नहीं था।

मुझे यह अजीब लगता है कि आप एक ऐसी घटना को जोड़ देंगे जो आप तुरंत आग लगने की उम्मीद करते हैं। क्यों न केवल उस मामले में हैंडलर या समारोह को बुलाओ।

2

आपको फॉर्म व्यू के आइटमक्रेटेड ईवेंट का उपयोग करना चाहिए। यह सभी पंक्तियों के निर्माण के बाद होता है, लेकिन फॉर्मव्यू डेटा से पहले बाध्य होने से पहले होता है।

Look at this MSDN page for more information

1

शायद मैं कुछ याद कर रहा हूँ! आप इसके बजाय इवेंट बबलिंग का उपयोग कर सकते हैं। लेकिन फॉर्म व्यू नियंत्रण में बाल नियंत्रण की घटनाओं को संभालने के लिए कोई घटना नहीं है। तो, हमारे पास कुछ बदलाव हैं।

[System.Web.UI.ToolboxData("<{0}:FormView runat=\"server\" />")] 
public class FormView : System.Web.UI.WebControls.FormView 
{ 

    private static readonly object _itemClickEvent = new object(); 

    [System.ComponentModel.Category("Action")] 
    public event EventHandler<System.Web.UI.WebControls.FormViewCommandEventArgs> ItemClick 
    { 
     add { base.Events.AddHandler(_itemClickEvent, value); } 
     remove { base.Events.RemoveHandler(_itemClickEvent, value); } 
    } 

    protected virtual void OnItemClick(System.Web.UI.WebControls.FormViewCommandEventArgs e) 
    { 
     EventHandler<System.Web.UI.WebControls.FormViewCommandEventArgs> handler = base.Events[_itemClickEvent] as EventHandler<System.Web.UI.WebControls.FormViewCommandEventArgs>; 
     if (handler != null) handler(this, e); 
    } 

    protected override bool OnBubbleEvent(object source, EventArgs e) 
    { 
     this.OnItemClick((System.Web.UI.WebControls.FormViewCommandEventArgs)e); 
     return base.OnBubbleEvent(source, e); 
    } 

} 

उपरोक्त कोड का प्रदर्शन किया स्निपेट, हम कैसे बच्चे को नियंत्रण 'के ईवेंट प्रबंधित करने FormView नियंत्रण के लिए एक ItemClick घटना जोड़ सकते हैं। अब, आपको इसके बजाय नया फॉर्म व्यू नियंत्रण मैप करना चाहिए या खींचना चाहिए।

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