[英]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
沒有使用任何JS
或CSS
。(這是問題嗎?)
找到有關SO問題的解決方案
實際的問題是:我在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.