Partial Refresh Progress Notification – जैसाकि पिछले Section में हमने देखा कि UpdatePanel Control पूरी तरह से Background में Asynchronously काम करता है इसलिए हम हमारे Page पर बिना किसी परेशानी के अन्य Tasks को पूरा कर सकते हैं और सामान्यत: हम हमारे Application से इसी Behavior की उम्मीद भी करते हैं। क्योंकि जब Asynchronous Request Perform हो रहा होता है, तब हमें इस बात का पता भी नहीं होता कि Background में कुछ हो रहा है।
हालांकि कई बार ये स्थिति काफी असुविधाजनक भी हो जाती है क्योंकि हम किसी Action को Asynchronously Perform होने के लिए Action करते हैं, लेकिन समय अधिक लगने पर हमें इस बात का शक होने लगता है कि हमारा काम Asynchronously Perform हो भी रहा है या नहीं।
इस स्थिति को Handle करने के लिए ASP.NET Framework हमें UpdateProgress नाम का एक और Control Provide करता है। ये Control भी UpdatePanel Control के साथ मिलकर ही काम करता है और हमें इस बात का Indication देता रहता है कि कोई Asynchronous Task का Processing चल रहा है।
हालांकि UpdateProgress नाम एक तरह से Misleading Name है क्योंकि ये Control हमारे Asynchronous Task के Process होने की Progress को Indicate नहीं करता बल्कि केवल एक Wait Message Specify करने की सुविधा देता है, जिससे User को ये पता रहे कि कोई काम Under-Processing है।
जब हम इस Control को अपने Page पर Place करते हैं, तब हम Wait Message के रूप में किसी Control को इस Control में Specify कर सकते हैं, जो कि उस समय Display होता है, जब कोई Task Under-Process होता है और जैसे ही वह Task Complete होता है, ये Wait Message Disappear हो जाता है।
हालांकि इस Control के Control के रूप में एक Fixed Message को Specify किया जाता है, लेकिन हम किसी Animated GIF Image को भी Use कर सकते हैं, जो तब तक इस बात को Specify करता है कि Background में कोई Process Running है, जब तक कि वह Task Complete नहीं हो जाता।
चलिए, एक Example द्वारा इस Control की Basic Working को समझने की कोशिश करते हैं, जो कि निम्नानुसार है:
[code] File Name: Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AJAX.Default" %> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5)); Label1.Text = DateTime.Now.ToLongTimeString(); } </script> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> Current Time: <asp:Label ID="Label1" runat="server" Text=""></asp:Label> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </ContentTemplate> </asp:UpdatePanel> <asp:UpdateProgress ID="UpdateProgress1" runat="server"> <ProgressTemplate> Loading... </ProgressTemplate> </asp:UpdateProgress> </div> </form> </body> </html> [/code]
जब हम इस Page को Run करते हैं, तो सबसे पहले हमें निम्नानुसार Output Page प्राप्त होता है:
फिर जब हम “Button” को Click करते हैं, तो निम्न Handler Execute होता है:
[code] protected void Button1_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5)); Label1.Text = DateTime.Now.ToLongTimeString(); } [/code]
ये Handler 5 Seconds तक के लिए पूरे Page को इस तरह से Specify करता है, जैसे कि हमारा Page कोई Time Consuming काम करते हुए Response को Web Server से धीरे-धीरे Receive कर रहा हो। साथ ही इस Simulation को Represent करने के लिए हमें Output Page पर निम्नानुसार एक Wait Message भी दिखाई देता है:
ये Wait Message हमने निम्न Markup के माध्यम से अपने UpdateProgress के Template में निम्नानुसार Specify किया है:
[code] <asp:UpdateProgress ID="UpdateProgress1" runat="server"> <ProgressTemplate> Loading... </ProgressTemplate> </asp:UpdateProgress> [/code]
परिणामस्वरूप जैसे ही 5 Seconds का Wait पूरा हो जाता है, हमारा Resultant Output Page निम्नानुसार दिखाई देने लगता है:
इस Example में हमने इस बात को Represent करने के लिए कि कोई Time-Consuming Task Asynchronously Background में Perform हो रहा है, अपने Current Webpage के Thread को 5 Seconds के लिए Wait State में Place कर दिया है। जबकि वास्तव में हमें ऐसा कोई Code नहीं लिखना होता।
क्योंकि सामान्यत: जब हमारा Web Application Live होता है, तब Asynchronous Task Perform होने में थोडा-बहुत समय लगता ही है और उस समय तक ही UpdateProgress Control द्वारा Specified Wait Message को Display किया जाता है।
हालांकि जब हमारे Page पर कई UpdatePanel Controls होते हैं, तब हमारा UpdateProgress Control द्वारा Specified Wait Message किस UpdatePanel Control के लिए है, ये बात हमें UpdateProgress.AssociatedUpdatePanelID Property में उस UpdatePanel Control के ID को Set करके Specify करना होता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance ASP.NET WebForms in Hindi | Page:707 | Format: PDF