2009-06-03 30 views
5

पर उपयोगकर्ता नियंत्रण घटनाओं को संभालना मैं एक सहेजने वाला बटन रखने वाला उपयोगकर्ता नियंत्रण रखना चाहता हूं।पेज

मैं क्लिक सहेजें बटन से जुड़ी घटना चाहते हैं पृष्ठ नहीं उपयोगकर्ता नियंत्रण

द्वारा नियंत्रित किया जा करने के लिए यह संभव है?

संपादित करें और अधिक विशिष्ट

मैं एक पेज "संपादक पृष्ठ" कहा जाता है और "संपादक बटन" नामक एक उपयोगकर्ता नियंत्रण है कहो। "संपादक बटन" उपयोगकर्ता नियंत्रण पर मेरे पास एक सेव बटन है (जो एक वेब नियंत्रण है)। मैं उपयोगकर्ता नियंत्रण के बजाय "संपादक पृष्ठ" द्वारा सहेजने के लिए सहेजें बटन की क्लिक ईवेंट चाहता हूं।

इसका कारण यह है कि मैं सामान्य व्यवहार को लागू करने वाले बेस पेज निर्दिष्ट करना चाहता हूं।

उत्तर

4

मुझे लगता है कि आपके पास UserControl का कोड है। यदि ऐसा है, तो आप अपने उपयोगकर्ता नियंत्रण में एक सेव इवेंट को परिभाषित कर सकते हैं और इसे सेव बटन, either directly पर क्लिक ईवेंट का खुलासा कर सकते हैं, या आंतरिक रूप से एक ईवेंट हैंडलर सेट अप करके और बटन क्लिक होने पर सहेजें ईवेंट को बढ़ाकर। यह UserControl में ऐसा कुछ दिखाई दे सकता है:

public event EventHandler Save; 

private void SaveButton_Click(object sender, EventArgs e) 
{ 
    OnSave(e); 
} 

protected void OnSave(EventArgs e) 
{ 
    // raise the Save event 
    EventHandler save = Save; 
    if (save != null) 
    { 
     save(this, e); 
    } 
} 
4

इस तकनीक को आमतौर पर "ईवेंट बबलिंग" के रूप में जाना जाता है।

public partial class Test : System.Web.UI.UserControl 

{ 

public event EventHandler buttonClick; 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    buttonClick(sender, e); 
} 

} 

तो फिर तुम अलग जानकारी प्रदर्शित करने के वेबपेज पर घटना buttonClick सदस्यता ले सकते हैं:

यहाँ एक exmple है।

public partial class Test: System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

UserControlID.buttonClick+=new EventHandler(UserControlID_buttonClick); 

} 

protected void UserControlID_buttonClick(object sender, EventArgs e) 
{ 
    Response.Write("hello,I am jack."); 
} 

} 
1

UserControl1.ascx

UserControl1.ascx.cs

सार्वजनिक आंशिक वर्ग UserControl1: System.Web.UI.UserControl

{

public event EventHandler UserControl1Click; 



protected void Page_Load(object sender, EventArgs e) 

{ 

} 



protected void btn1_Click(object sender, EventArgs e) 

{ 

    UserControl1Click(sender, e); 

} 

}

UserControl2.ascx

UserControl1.ascx.cs

सार्वजनिक आंशिक वर्ग UserControl2: System.Web.UI.UserControl

{

public event EventHandler UserControl2Click; 



protected void Page_Load(object sender, EventArgs e) 

{ 

} 




protected void btn2_Click(object sender, EventArgs e) 

{ 

    UserControl2Click(sender, e); 

} 

}

फिर नीचे दिखाए गए अनुसार एएसपीएक्स टेक्स्ट बॉक्स (उपयोगकर्ता नियंत्रण आईडी प्रदर्शित करने के लिए) और दो उपयोगकर्ता नियंत्रण एएसपीएक्स पृष्ठ में जोड़ें।

<title>Untitled Page</title> 

<form id="form1" runat="server"> 



<div> 



<asp:TextBox ID="txt1" runat="server"></asp:TextBox> <br /> 



<UC1:UC ID="uc1" runat="server" /> 



<UC1:UC ID="uc2" runat="server" /> 



</div> 



</form> 

अब प्रत्येक उपयोगकर्ता नियंत्रण के रूप में नीचे दिखाया गया है दो नियंत्रण के बटन क्लिक करें घटना को संभालने के लिए के लिए ईवेंट हैंडलर जोड़ें।

सार्वजनिक आंशिक वर्ग _Default: System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e) 

{ 

    uc1.UserControl1Click += new EventHandler(uc1_UserControl1Click); 

    uc2.UserControl2Click += new EventHandler(uc2_UserControl2Click); 

} 



protected void uc1_UserControl1Click(object sender, EventArgs e) 

{ 

    txt1.Text = "User Control 1 Clicked"; 

} 



protected void uc2_UserControl2Click(object sender, EventArgs e) 

{ 

    txt1.Text = "User Control 2 Clicked"; 

} 

}

हम क्लिक करते हैं तो उपयोगकर्ता Control1, पाठ बॉक्स प्रदर्शित करता है "उपयोगकर्ता नियंत्रण 1 में क्लिक किया गया" या अगर हम उपयोगकर्ता नियंत्रण 2 पर क्लिक करते हैं, टेक्स्ट बॉक्स प्रदर्शित करता है "उपयोगकर्ता नियंत्रण 2 क्लिक किया गया"।