簡體   English   中英

UpdateProgress中的ProgressBar在獲取數據之前一直過期

[英]ProgressBar in UpdateProgress keeps expiring before the data is fetched

我有一個GridView ,它顯示一些數據,並且在最后一列中有一個Button ,它結合了其他3列的值。 我只需在rowCommand調用此函數GridData輕松刷新GridView

    protected void GridviewProcess_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        try
        {
            if (e.CommandName == "More")
            {
                objENT = new ENT();

                int index = Convert.ToInt32(e.CommandArgument.ToString());
                Label locCode = (Label)GridviewProcess.Rows[index].FindControl("lbl0");
                Label SurveyNo = (Label)GridviewProcess.Rows[index].FindControl("lbl2");
                Button Combine = (Button)GridviewProcess.Rows[index].FindControl("btnCombine");

                Combine.Enabled = false;
                objENT.LocationCode = locCode.Text;
                objENT.SurveyNumber = SurveyNo.Text;
                objENT.ProcType = "CREATECUSTOMER";
                DataSet ds = new DataSet();
                ds = BLL.CdCustomer(objENT);


            }

        }
        catch (Exception ex)
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Some Error occurred Please refresh the page')", true);

        }
        finally
        {
            Griddata();
        }

    private void Griddata()
    {
        objENT.ProcType = "PAGEGRIDDATA";
        DataSet ds = BLL.ProcessGrid(objENT);
        string check = ds.Tables[0].Rows[0]["TOTAL_CUSTOMER"].ToString();


        GridviewProcess.DataSource = ds.Tables[0];
        ViewState["Grid"] = ds.Tables[0];
        GridviewProcess.DataBind();
    }

之后,我添加了此ProgressBar

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel2">
                            <ProgressTemplate>
                                <img src="images/progress_bar.gif" style="max-width: 250px" />
                            </ProgressTemplate>
                        </asp:UpdateProgress>
                        <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                            <ContentTemplate>
                                <asp:GridView ID="GridviewProcess" AllowPaging="true"   CssClass="GridHeader" PagerSettings-Mode="NextPreviousFirstLast"  PagerSettings-PreviousPageText="<-Prev  " PagerSettings-Visible="true" PagerSettings-NextPageText="  Next->"
                                     PagerSettings-FirstPageText="<=FirstPage  " PagerSettings-LastPageText="  LastPage=>"     PagerStyle-Font-Bold="true" 
                                     OnPageIndexChanging="GridviewProcess_PageIndexChanging" PageSize="12" OnRowDataBound="GridviewProcess_RowDataBound" OnRowCommand="GridviewProcess_RowCommand" runat="server" Style="text-align: center"  Width="99%"
                                    AutoGenerateColumns="false">
                                    <Columns>
                                        <asp:TemplateField HeaderText="Total Customers" HeaderStyle-BackColor="#99CCCC">
                                            <ItemTemplate>
                                                <asp:Label ID="lbl7" runat="server" Text='<%# Eval("TOTAL_CUSTOMER") %>'>

                                                </asp:Label>
                                                <asp:Button ID="btnCombine" CssClass="btn-primary btn" Text="Combine"
                                                    CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" CommandName="More"
                                                    Style="padding-top: 1%; padding-bottom: 1%; margin-top: 1px; margin-bottom: 1px" runat="server" />

                                            </ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>

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

將顯示ProgressBar但是在調用GridData() {}函數之后,它將不會刷新GridView 我刷新整個頁面后才能看到更改。 我不明白發生了什么問題...此ProgressBar沒有使用任何JSCSS 。(這是問題嗎?)

找到有關SO問題的解決方案

UpdateProgress在處理數據之前超時

實際的問題是:我在ASP.NET頁面上有一個按鈕,該按鈕從數據庫中獲取一些數據並將其顯示在GridView

這個過程需要一段時間,所以我想我將添加一個updateprogress AJAX控件。 現在,當我單擊按鈕時,將顯示UpdateProgress圖像,並且已成功從數據庫中獲取數據(我從數據庫中的某些日志中檢查了此內容)。 但是有兩個問題:

UpdateProgress圖像僅顯示約2分鍾。 但是我的ButtonClick事件大約需要5分鍾才能完成。 基本上,即使我的任務尚未完成, UpdateProgress也會停止顯示,這違背了它的目的。

正如我在SO答案之一中發現的那樣

根據問題,很可能是ajax超時。 默認超時為90秒。 要增加使用ScriptManager's AsyncPostBackTimeout屬性,請執行以下操作:

<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="400">
</asp:ScriptManager>

如果AJAX調用超時,則頁面上的控件可能無法正常工作,因此增加超時也可以解決問題(2)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM