Partial Refresh – Triggers – AJAX in ASP.NET

Partial Refresh – Triggers – AJAX in ASP.NET – जब हम Conditional Update Mode Use करते हैं, तब हमारे पास कुछ और Options भी होते हैं जिनके माध्‍यम से हम Update को Trigger कर सकते हैं और एक उन्हीं में से एक <trigger> Element है, जो कि UpdatePanel को स्वयं को उस समय Render करने के लिए Instruct करता है जब Page पर कोई Specific Event Trigger होता है।

तकनीकी रूप से देखें तो UpdatePanel Control हमेंशा Internally Triggers को Use करता है और UpdatePanel के अन्दर जितने भी Controls  को Place किया जाता है, वे सभी Automatically UpdatePanel के Triggers बन जाते हैं।

उदाहरण के लिए पिछले Example में हमने UpdatePanel के अन्दर एक Button Control को Place किया है, इसलिए Button.Click  Event Automatically इस UpdatePanel का Trigger बन जाता है तथा एक Asynchronous Postback को Perform करने में सक्षम हो जाता है। साथ ही ये किसी भी Control के Default Events के साथ भी Deal कर सकता है, जिसे सम्बंधित Control के DefaultEvent Property में Specify किया गया होता है।

उदाहरण के लिए यदि हम UpdatePanel Control में किसी TextBox Control को Place करते हैं और TextBox.AutoPostBack Property को True Set रखते हैं, तो TextBox.TextChanged Event एक Anonymous Postback को Trigger करता है जिसके परिणामस्वरूप UpdatePanel Control Latest Content से Update हो जाता है।

Triggers का प्रयोग करके हम UpdatePanel Control के Behavior को दो तरीकों से Change कर सकते हैं। पहले तरीके के अन्तर्गत हम Panel के Outside में Placed Control को Panel से Link कर सकते हैं।

उदाहरण के लिए मानलो कि हमारा निम्नानुसार Button Control, UpdatePanel के बीच Enclosed नहीं है, बल्कि इससे Outside में Page पर कहीं अन्‍य Place पर Exist है:

  <asp:Button ID=”cmdOutsideUpdate” runat=”server” Text=”Update” />

सामान्‍यत: यदि हम इस Button को Click  करें, तो ये Full Postback को Trigger करेगा। लेकिन यदि हम इस Button को UpdatePanel से Link कर दें, तो उस स्थिति में हालांकि ये Button UpdatePanel से Outside में Placed होगा, फिर भी Asynchronous Postback को Perform करने में सक्षम होगा।

इस स्थिति में इस Button को Panel Control के साथ Link करने के लिए हमें हमारे UpdatePanel Control में निम्नानुसार AsyncPostBackTrigger Control को Add करना होता है, जो कि उस Control के Id को ControlId Property के माध्‍यम से Specify करता है, जिसे UpdatePanel Control के साथ Link करना होता है।

इसलिए इस Button Control को यदि हम अपने UpdatePanel Control के साथ स्पदा करना चाहें, तो हमें <Triggers> Element के बीच इस <AsyncPostBackTrigger> Control को निम्नानुसार Specify करना होगा:


    <asp:UpdatePanel
          ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Label ID="Label2" runat="server" Font-Bold="True"></asp:Label>

       </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger
            ControlID="cmdOutsideUpdate" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>

इस Code में हमने EventName Attribute के माध्‍यम से उस Event को भी Specify किया है, जो कि Outside Control द्वारा Trigger होने वाला वो Event है, जिसे हम Monitor करना चाहते हैं। हालांकि इसे Specify करना जरूरी नहीं होता, क्‍योंकि सामान्‍यत: इस Attribute में Control का Default Event Automatically Set रहता है। लेकिन फिर भी इसे Manually Specify कर देना Good Programming Practice माना जाता है।

अब जब हम उपरोक्तानुसार Code के माध्‍यम से cmdOutsideUpdate Button को UpdatePanel Control के साथ Link कर देते हैं, उसके बाद इस Outside Button को Click करने पर भी Current Webpage एक Asynchronous Postback Perform कर सकता है और जब ऐसा होता है तो सभी UpdatePanel Controls] जिनकी UpdateMode Property में “Always” Set है, Refresh हो जाते हैं।

साथ ही वे सभी UpdatePanel Controls, जिनकी UpdateMode Property में “Conditional” Set है तथा उसमें यदि AsyncPostBackTrigger को cmdOutsideUpdate Control के लिए Specify किया गया है, तो वे Controls भी Refresh हो जाते हैं।

हम समान UpdatePanel के साथ Multiple Triggers को Add कर सकते हैं, और उस स्थिति में उन सभी के माध्‍यम से Update को Trigger किया जा सकता है। हम समान Trigger को कई Different Conditional UpdatePanel Controls के साथ भी Add कर सकते हैं और उस स्थिति में वह Event उन सभी को Update कर देता है।

साथ ही हम Triggers व Nested Controls को किसी Conditional UpdatePanel Control में Mix व Match भी कर सकते हैं और इस स्थिति में Nested Controls द्वारा Triggered Events तथा <Trigger> Control में Specified Events] दोनों Update को Perform कर सकते हैं।

Triggers को हम एक और तरीके से भी Use कर सकते हैं, जहां हम कई Controls को Monitor करने के स्थान पर Triggers का प्रयोग कुछ Specific Controls को Ignore करने के लिए Configure किया जा सकता है।

उदाहरण के लिए मानलो कि हमारे UpdatePanel Control में एक Button है। सामान्‍यत: इस Button को Click करने पर एक Asynchronous Request Fire होता है जो कि Partial Update करता है। लेकिन यदि हम इस Button को Full-Page Postback के लिए Setup करना चाहते हैं, तो उस स्थिति में हमें AsyncPostBackTrigger के स्थान पर PostBackTrigger Element को निम्नानुसार तरीके से Add कर सकते हैं:


<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Label ID="Label2" runat="server" Font-Bold="True"></asp:Label>
            <br />
            <br />
            <asp:Button ID="cmdPostback" runat="server" Text="Refresh Full Page" />
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="cmdPostback" />
        </Triggers>
</asp:UpdatePanel>

हालांकि इस तकनीक को ज्यादा Use नहीं किया जाता, क्‍योंकि UpdatePanel Control का प्रयोग सामान्‍यत: Asynchronous Request के लिए ही किया जाता है। जबकि Normal Postback के लिए इस Control को Use करने का कोई मतलब नहीं होता। लेकिन यदि कभी जरूरत पडे, तो इस तकनीक का प्रयोग करते हुए UpdatePanel Control को भी Synchronous Request Perform करने के लिए उपयोग में लिया जा सकता है।

Conditional Updates Partial Refresh - AJAX in ASP.NET
Hierarchy of Server Controls - ASP.NET WebForms Controls

Core ASP.NET WebForms in Hindi - BccFalna.com: TechTalks in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF

BUY NOW GET DEMO REVIEWS