2014-07-18 5 views
7

Hallo, ich lade riesige Daten von asp.net Ajax auf Schaltfläche klicken in der Grid-Ansicht Lade Nachricht auf Update anzeigen prgress ... in Update-Fortschritt Zeit muss ich meine BtnLoadReport Button deaktivieren .Deaktivieren Sie die Schaltfläche auf Update-Fortschritt in ASP.net Ajax

<td> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
</td> 
<td> 
    &nbsp;</td> 
<td> 
&nbsp;</td> 
</tr> 
    <tr> 
    <td> 
    <asp:UpdateProgress ID="updProgress" 
     AssociatedUpdatePanelID="UpdatePanel1" 
     runat="server" oninit="updProgress_Init" onprerender="updProgress_PreRender"> 
      <ProgressTemplate>    
       <span style="color:green; font-style:italic;">Loading, please wait...</span>    
      </ProgressTemplate> 
     </asp:UpdateProgress> 
         <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
         <ContentTemplate> 
         <div id="DemoId"> 
          <asp:Button ID="BtnLoadReport" runat="server" onclick="BtnLoadReport_Click" 
       Text="LoadReport" Width="176px" ClientIDMode="Static" OnClientClick="return clickOnLoadReport();" /> 
       </div> 
          <asp:GridView ID="GridView1" runat="server" Height="170px" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" Width="438px"> 
       </asp:GridView> 
         </ContentTemplate> 
         <Triggers> 
         <asp:AsyncPostBackTrigger ControlID="BtnLoadReport" EventName="Click" /> 
         </Triggers> 
         </asp:UpdatePanel> 
        </td> 
        <td> 
         &nbsp;</td> 
        <td> 
         &nbsp;</td> 
       </tr> 
      </table> 

mein Skript-Taste zu deaktivieren

  <script type="text/javascript"> 
      var updateProgress = null; 
       function clickOnLoadReport() { 
       // This will disable all the children of the div 
       var prm = Sys.WebForms.PageRequestManager.getInstance(); 
       if (prm.get_isInAsyncPostBack()==false) { 
       var nodes = document.getElementById("DemoId").getElementsByTagName('*'); 
       for (var i = 0; i < nodes.length; i++) { 

       nodes[i].disabled = true; 
       // nodes[i].off("click"); 
       } 
      } 
      } 
      </script> 

aber es ist das Deaktivieren nicht meine Taste lange wird es zu deaktivieren für nur wenige Sekunden

protected void Page_Load(object sender, EventArgs e) 
     { 
      ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(this.BtnLoadReport); 
     } 

     protected void BtnLoadReport_Click(object sender, EventArgs e) 
     { 
      // System.Threading.Thread.Sleep(3000); 

       UpdatePanel1.Update(); 
       DataSet dataSet = new DataSet(); 
       dataSet.ReadXml(@"C\Data.Xml"); 
       GridView1.DataSource = dataSet.Tables[0]; 
       GridView1.DataBind(); 

     } 

     protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 

     protected void updProgress_Init(object sender, EventArgs e) 
     { 
BtnLoadReport.Enable = false;   
         } 

     protected void updProgress_PreRender(object sender, EventArgs e) 
     { 
      BtnLoadReport.Enable 
= true; 
     } 

dies vor, was ich versuchte, meine zu deaktivieren Taste BtnLoadReport auf Update Fortschritt funktioniert immer noch nicht Vielen Dank im Voraus

Antwort

3
function clickOnLoadReport() { 
     var requestManager = Sys.WebForms.PageRequestManager.getInstance(); 
     requestManager.add_initializeRequest(CancelPostbackForSubsequentSubmitClicks); 

     function CancelPostbackForSubsequentSubmitClicks(sender, args) { 
      if (requestManager.get_isInAsyncPostBack() & 
     args.get_postBackElement().id == 'BtnLoadReport') { 
       args.set_cancel(true); 
       document.getElementById("BtnLoadReport").setAttribute("disabled", "disabled"); 
       //alert('A previous request is still in progress that was issued on clicking ' + args.get_postBackElement().id); 
      } 
     } 
    } 

ich machte Änderungen in meiner Javascript-Funktion es löst mein Problem

Verwandte Themen