问题: 为什么我的UpdateProgress在初始页面加载期间没有显示,但是通过按钮点击进行后续回发?
我设法让这个工作的唯一方法是使用计时器,我并不热衷于此。还有另一种方式吗?
有人可以解释为什么doSearch()
会导致updateprogress从按钮点击开始工作,而不是通过docoment准备好在页面加载上工作吗?
代码:
Js处理程序:
<script>
$(document).ready(doSearch);
function doSearch() {
$('#<%= UpdatePanel1Trigger.ClientID %>').click();
return false;
}
</script>
ASPX:
//if i click this button the updateprogress works
//and the panel loads
<asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="form-control"
OnClientClick="return doSearch();" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"
OnLoad="UpdatePanel1_Load" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Button ID="UpdatePanel1Trigger" runat="server"
style="display:none" OnClick="UpdatePanel1Trigger_Click" />
<%--gridview that takes a while to load--%>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server"
AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1">
<ProgressTemplate>
<asp:Image ID="imgUpdateProgress1" runat="server"
ImageUrl="~/Images/spinner.gif" AlternateText="Loading ..." ToolTip="Loading ..."/>
</ProgressTemplate>
</asp:UpdateProgress>
代码隐藏:
protected void UpdatePanel1Trigger_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(m_search))
{
performSearch(); //loads data for gridview in updatepanel
}
}
答案 0 :(得分:0)
可能是jQuery库干扰MS AJAX库的方式。试着强迫它显示:
<script>
$(document).ready(function() {
$('#<%= UpdateProgress1.ClientID %>').show();
doSearch();
});
function doSearch() {
$('#<%= UpdatePanel1Trigger.ClientID %>').click();
return false;
}
</script>
作为替代方案,jQuery的$(document).ready
尝试使用MS方法:
<script>
Sys.Application.add_load(doSearch);
function doSearch() {
$('#<%= UpdatePanel1Trigger.ClientID %>').click();
return false;
}
</script>
答案 1 :(得分:0)
最后我觉得我找到了它:
#include<stdio.h>
#include<string.h>
int main()
{
FILE *ptr_file;
char buf[1000];
char output[];
ptr_file =fopen("CodeSV.txt","r");
if (!ptr_file)
return 1;
while (fgets(buf,1000, ptr_file)!=NULL)
strcat(output, buf);
printf("%s",output);
fclose(ptr_file);
printf("%s",output);
return 0;
}
这是背后的代码:
<%@Page Language="VB" AutoEventWireup="false"
CodeFile="prueba.aspx.vb" Inherits="Programación_prueba" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>UpdatePanel Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/>
<asp:UpdateProgress runat="server" ID="PageUpdateProgress">
<ProgressTemplate>
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel runat="server" ID="Panel">
<ContentTemplate>
<asp:Button runat="server" ID="UpdateButton" OnClick="UpdateButton_Click" Text="Update"/>
<asp:Timer runat="server" ID="UpdateTimer" Interval="5000" OnTick="UpdateTimer_Tick"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick"/>
</Triggers>
</asp:UpdatePanel>
</form>
</body>
</html>
非常感谢所有的想法。 Aurelio J. Maldonado