यहाँ एक पूर्ण समाधान है
Asp.net पेज का पूरा फॉर्म टैग
<form id="form1" runat="server">
<asp:LinkButton ID="LinkButton1" runat="server" /> <%-- included to force __doPostBack javascript function to be rendered --%>
<input type="button" id="Button45" name="Button45" onclick="javascript:__doPostBack('ButtonA','')" value="clicking this will run ButtonA.Click Event Handler" /><br /><br />
<input type="button" id="Button46" name="Button46" onclick="javascript:__doPostBack('ButtonB','')" value="clicking this will run ButtonB.Click Event Handler" /><br /><br />
<asp:Button runat="server" ID="ButtonA" ClientIDMode="Static" Text="ButtonA" /><br /><br />
<asp:Button runat="server" ID="ButtonB" ClientIDMode="Static" Text="ButtonB" />
</form>
पेज के कोड के पीछे पूरी सामग्री-कक्षा के पीछे
Private Sub ButtonA_Click(sender As Object, e As System.EventArgs) Handles ButtonA.Click
Response.Write("You ran the ButtonA click event")
End Sub
Private Sub ButtonB_Click(sender As Object, e As System.EventArgs) Handles ButtonB.Click
Response.Write("You ran the ButtonB click event")
End Sub
- LinkButton यह सुनिश्चित करने के लिए शामिल है कि __doPostBack जावास्क्रिप्ट फ़ंक्शन क्लाइंट को प्रदान किया गया है। बस बटन नियंत्रण होने से यह __doPostBack फ़ंक्शन प्रदान नहीं करेगा। यह फ़ंक्शन अधिकांश ASP.NET पृष्ठों पर विभिन्न प्रकार के नियंत्रण रखने के आधार पर प्रदान किया जाएगा, इसलिए एक खाली लिंक बटन की आमतौर पर आवश्यकता नहीं होती है
क्या चल रहा है?
दो इनपुट नियंत्रण ग्राहक को प्रदान किए जाते हैं:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
__EVENTTARGET
__doPostBack का तर्क 1 प्राप्त करता है
__EVENTARGUMENT
__doPostBack का तर्क 2 प्राप्त करता है
__DoPostBack फ़ंक्शन को इस तरह प्रस्तुत किया गया है:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
- जैसा कि आप देख सकते हैं, यह छिपे हुए आदानों को मान प्रदान करता है।
जब फॉर्म सबमिट / पोस्टबैक होता है:
- यदि आपने सर्वर-कंट्रोल बटन का यूनीकआईडी प्रदान किया है जिसका बटन-क्लिक-हैंडलर आप चलाना चाहते हैं (
javascript:__doPostBack('ButtonB','')
, तो उस बटन के लिए बटन क्लिक हैंडलर चलाया जाएगा।
क्या होगा अगर मैं एक क्लिक हैंडलर नहीं चलाना चाहता, लेकिन इसके बजाय कुछ और करना चाहता हूं?
आप जो चाहें बहस कर सकते हैं __doPostBack
फिर आप छिपे हुए इनपुट मानों का विश्लेषण कर सकते हैं और तदनुसार विशिष्ट कोड चला सकते हैं:
If Request.Form("__EVENTTARGET") = "DoSomethingElse" Then
Response.Write("Do Something else")
End If
अन्य नोट
- क्या होगा अगर मुझे उस नियंत्रण की आईडी नहीं पता है जिसके क्लिक हैंडलर को मैं चलाना चाहता हूं?
- यदि यह सेट करने के लिए स्वीकार्य नहीं है
ClientIDMode="Static"
, तो आप ऐसा कुछ कर सकते हैं __doPostBack('<%= myclientid.UniqueID %>', '')
:।
- या:
__doPostBack('<%= MYBUTTON.UniqueID %>','')
- यह जावास्क्रिप्ट में नियंत्रण की अनूठी आईडी को इंजेक्ट करेगा, क्या आपको इसकी इच्छा करनी चाहिए