UpdateProgress使用,出不来特效问题小结
2008-01-03 11:29
351 查看
在updatePanel里面放了一个Button和Label,然后点击Button给Label赋值。这个是个很简单的过程了。
代码我就补贴了。
然后我再加了一个UpdateProgress控件,把它的AssociatedUpdatePanelID指向刚加的UpdatePanel,其代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label" Width="204px"></asp:Label><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1">
<ProgressTemplate >
<p>
更新中......
</p>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
Button事件:
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
Label1.Text = DateTime.Now.ToString();
}
运行结果正常,点击Button,“更新中...”出现,然后Label被赋值。
然后我把updateProgress拿到updatePanel控件外面来,运行,正常。
然后我再把button控件拿到updatePannel控件外面来,然后又在updatepanel里面加上triggers,代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label" Width="204px"></asp:Label><br />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" Width="201px" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1">
<ProgressTemplate >
<p>
更新中......
</p>
</ProgressTemplate>
</asp:UpdateProgress>
运行,点击Button按钮,发现"更新中..."字段没有出现,但是赋值正常。
难道使用triggers的调用外部控件来进行异步传输,不会引发UpdateProgress?
后来在网上找到了解决方法:
在代码里面加入如下js:
<script language="javascript" type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
var postBackElement;
function InitializeRequest(sender, args)
...{
if (prm.get_isInAsyncPostBack())
...{
args.set_cancel(true);
}
postBackElement = args.get_postBackElement();
if (postBackElement.id = 'Button1') ...{
$get('UpdateProgress1').style.display = 'block';
}
}
function EndRequest(sender, args)
...{
if (postBackElement.id = 'Button1')
...{
$get('UpdateProgress1').style.display = 'none';
}
}
</script>
然后运行正常,从上面的js可以看出,如果是triggers触发的button事件,那么progress控件的style.display始终都是none,在button_click事件触发时,并没有使progress的 style.display变成block。所以里面的"更新中..."显示不出来。
再如:
<div id="divUpdateProgress" style="position: absolute; right: 466px; top: 48px; height: 20px;">
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<div style="font-size: 12px; color: Blue; background-color: #FFFFD6; border: solid 1px blue;">
<img src="../Image/ajaxloader.gif" />
数据加载中,请稍候
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</div>
<script language="javascript" type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
var postBackElement;
function InitializeRequest(sender, args)
...{
if (prm.get_isInAsyncPostBack())
...{
args.set_cancel(true);
}
postBackElement = args.get_postBackElement();
if (postBackElement.id == '<%=btnSearch.ClientID %>' || postBackElement.id == '<%=btnSearchOnProj.ClientID %>')
...{
$get('divUpdateProgress').style.display = 'block';
}
}
function EndRequest(sender, args)
...{
if (postBackElement.id == '<%=btnSearch.ClientID %>' || postBackElement.id == '<%=btnSearchOnProj.ClientID %>')
...{
$get('divUpdateProgress').style.display = 'none';
}
}
</script>
代码我就补贴了。
然后我再加了一个UpdateProgress控件,把它的AssociatedUpdatePanelID指向刚加的UpdatePanel,其代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label" Width="204px"></asp:Label><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1">
<ProgressTemplate >
<p>
更新中......
</p>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
Button事件:
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
Label1.Text = DateTime.Now.ToString();
}
运行结果正常,点击Button,“更新中...”出现,然后Label被赋值。
然后我把updateProgress拿到updatePanel控件外面来,运行,正常。
然后我再把button控件拿到updatePannel控件外面来,然后又在updatepanel里面加上triggers,代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label" Width="204px"></asp:Label><br />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" Width="201px" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1">
<ProgressTemplate >
<p>
更新中......
</p>
</ProgressTemplate>
</asp:UpdateProgress>
运行,点击Button按钮,发现"更新中..."字段没有出现,但是赋值正常。
难道使用triggers的调用外部控件来进行异步传输,不会引发UpdateProgress?
后来在网上找到了解决方法:
在代码里面加入如下js:
<script language="javascript" type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
var postBackElement;
function InitializeRequest(sender, args)
...{
if (prm.get_isInAsyncPostBack())
...{
args.set_cancel(true);
}
postBackElement = args.get_postBackElement();
if (postBackElement.id = 'Button1') ...{
$get('UpdateProgress1').style.display = 'block';
}
}
function EndRequest(sender, args)
...{
if (postBackElement.id = 'Button1')
...{
$get('UpdateProgress1').style.display = 'none';
}
}
</script>
然后运行正常,从上面的js可以看出,如果是triggers触发的button事件,那么progress控件的style.display始终都是none,在button_click事件触发时,并没有使progress的 style.display变成block。所以里面的"更新中..."显示不出来。
再如:
<div id="divUpdateProgress" style="position: absolute; right: 466px; top: 48px; height: 20px;">
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<div style="font-size: 12px; color: Blue; background-color: #FFFFD6; border: solid 1px blue;">
<img src="../Image/ajaxloader.gif" />
数据加载中,请稍候
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</div>
<script language="javascript" type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
var postBackElement;
function InitializeRequest(sender, args)
...{
if (prm.get_isInAsyncPostBack())
...{
args.set_cancel(true);
}
postBackElement = args.get_postBackElement();
if (postBackElement.id == '<%=btnSearch.ClientID %>' || postBackElement.id == '<%=btnSearchOnProj.ClientID %>')
...{
$get('divUpdateProgress').style.display = 'block';
}
}
function EndRequest(sender, args)
...{
if (postBackElement.id == '<%=btnSearch.ClientID %>' || postBackElement.id == '<%=btnSearchOnProj.ClientID %>')
...{
$get('divUpdateProgress').style.display = 'none';
}
}
</script>
相关文章推荐
- 解决Ajax的updatepanel控件不能使用fileupload的问题
- Android Studio 简单介绍和使用问题小结
- jqueryUI中datepicker的使用,解决与asp.net中的UpdatePanel联合使用时的失效问题
- 关于mysql的update、delete、和insert into能否使用别名问题
- 右拍云 图片点击放大后出现布局混乱问题的详解 并小结backgroundimage和img的使用情况
- ASP.NET-019:UpdatePanel中无法使用Response问题
- Android Studio 简单介绍和使用问题小结
- 解决AJAX中使用UpdatePanel后再用Response.Write();等无法弹出对话框问题(转)
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- 【Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- Android Studio 简单介绍和使用问题小结
- 问题小结(4)-在res里定义数组的简单使用
- Android Studio 简单介绍和使用问题小结 -gradle
- 使用UpdatePanel时FileUpload失效的问题
- 解决AJAX中使用UpdatePanel后再用RegisterStartupScript等无法弹出对话框问题
- 使用UpdatePanel出现的小问题
- Atlas UpdatePanel使用技巧以及常见问题
- 解决AJAX中使用UpdatePanel后再用RegisterStartupScript等无法弹出对话框问题
- 使用update更新MongoDB文档应注意的问题,即使使用了$inc\$set等
- PhoneGap在Mac环境下使用问题小结