2012-12-13 14 views
7

मेरे पास पर onClick ईवेंट पर प्रत्येक कॉलिंग के तीन बटन हैं। पीछे कोड में मैं उस बटन की आईडी प्राप्त करना चाहता हूं जो पोस्टबैक का कारण बनता है। मुझे पता है कि मैं एक अलग विधि को कॉल करने के लिए प्रत्येक बटन को असाइन कर सकता हूं लेकिन मैं थोड़ा सा एएसपी.Net सीखना चाहता हूं। मुझे यह भी बताएं कि कौन सी विधि अधिक कुशल है? विभिन्न बटन क्लिक पर विभिन्न विधियों को कॉल करना या उसी विधि को कॉल करना (यदि प्रत्येक बटन की कार्यक्षमता समान है)।कोड का पता लगाने के लिए किस बटन को क्लिक किया गया था?

+1

घटना में इस वस्तु का उपयोग करें हैंडलर। – ryadavilli

+0

एमवीसी के बजाय – Jeroen

उत्तर

20

प्रेषक ऑब्जेक्ट को बटन पर कास्ट करें और फिर आप सभी गुण प्राप्त कर सकते हैं।

Button clickedButton = (Button)sender; 

इसके अलावा मुझे बताओ कि जो विधि अधिक कुशल है? अलग-अलग बटन क्लिक पर विभिन्न विधियों को पर कॉल करना या उसी विधि को कॉल करना (यदि प्रत्येक बटन की कार्यक्षमता समान है)।

यदि कार्यक्षमता समान है तो एक एकल ईवेंट होना बेहतर है, क्योंकि आपको कोड दोहराना नहीं है। DRY principle याद रखें।

निम्न उदाहरण पर विचार करें:।

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Button clickedButton = sender as Button; 

    if (clickedButton == null) // just to be on the safe side 
     return; 

    if (clickedButton.ID == "Button1") 
    { 
    } 
    else if(clickedButton.ID == "Button2") 
    { 
    } 
} 
3

चेक अपने कॉलबैक विधि के sender तर्क बटन अपने में रुचि रखते हैं के रूप में ही उल्लेख किया गया है कि क्या

Button button1; 
Button button2; 

void OnClick(object sender, RoutedEventArgs args) 
{ 
    Button button = sender as Button; 
    if (button == button1) 
    { 
     ... 
    } 
    if (button == button2) 
    { 
     ... 
    } 
} 
+0

सीखें जो वास्तव में मुझे आश्चर्यचकित करता है। मैंने सोचा था कि == 'ऑब्जेक्ट.equals' का उपयोग करेगा, जो परीक्षण करेगा यदि वे एक ही संदर्भ हैं। इसका क्या हिस्सा गलत है? – ceyko

+0

यह संभवतः इसे करने के लिए सबसे अच्छा अभ्यास है (और संभवतः आवश्यक), इसलिए मेरा संपादन :) – ceyko

+0

मैं तर्क दूंगा कि यह सर्वोत्तम अभ्यास है या नहीं, अगर आप बटन आईडी तक पहुंचना चाहते हैं, या इसकी अन्य जानकारी से संबंधित कुछ अन्य जानकारी । आपको ऑब्जेक्ट को बटन पर डालना होगा, जैसा कि आप अभी कर रहे हैं – Habib

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

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