您好我正在创建一个ASP.NET/C#应用程序我有一个需要时间更新的更新面板.有没有办法在计算期间显示"正在加载...请等待"消息?
目前我正在使用AJAX面板动画淡入/淡出,使面板在计算时消失,然后在完成时重新出现.但这不太实际.
如果可能,我需要显示一条消息.
感谢您的任何帮助.
这是我的面板的代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click"/>
</Triggers>
<ContentTemplate>
//Contents goes here
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
和Ajax Panel动画扩展器
<ajaxToolkit:UpdatePanelAnimationExtender ID="UpdatePanelAnimationExtender1" runat="server" TargetControlID="UpdatePanel1">
<Animations>
<OnUpdating>
<FadeOut Duration="1" Fps="20" />
</OnUpdating>
<OnUpdated>
<FadeIn Duration="2" Fps="20" />
</OnUpdated>
</Animations>
</ajaxToolkit:UpdatePanelAnimationExtender>
Run Code Online (Sandbox Code Playgroud) 有没有办法在UpdatePanel进程完成时执行脚本.
我有一个页面,允许"插入","复制"和"编辑"记录.这都是在UpdatePanel上完成的,以防止页面导航.在页面的其他地方,我想打印一条"flash"消息 - 比如"你已成功输入记录".它不在UpdatePanel附近,我想对消息使用jQuery效果,因此它会在4秒后淡出.如何使用UpdatePanel发回脚本或在UpdatePanel刷新后执行脚本?我应该将脚本写入asp:literal吗?想法?
我有一个文本框,可以更改OnTextChanged事件中下拉列表的内容.当文本框失去焦点时,此事件似乎会触发.如何在按键或键盘事件中实现此目的?
这是我的代码示例
<asp:TextBox ID="Code" runat="server" AutoPostBack="true" OnTextChanged="Code_TextChanged">
<asp:UpdatePanel ID="Update" runat="server">
<ContentTemplate>
<asp:DropDownList runat="server" ID="DateList" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Code" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
所以在代码隐藏中,我在页面加载时绑定下拉列表.Code_TextChanged事件只是重新绑定下拉列表.我希望在每个按键上发生这种情况,而不是在文本框失去焦点时发生.
我最近继承了这个代码,这不是我这样做的理想方法,但是时间限制阻止我在web servicy方法中重写它.
我已经尝试使用jQuery来绑定"keyup"事件以匹配文本框的"更改"事件,但这仅适用于按下的第一个键.
我们有一个包含大量jQuery(大约2000行)的页面,我们想要减少b/c这是一个维护噩梦,它可能更容易维护在服务器上.我们已经考虑过使用UpdatePanel.但是,我们不喜欢UpdatePanel将整个页面发送回服务器的事实.
我有一个更新面板,在更新面板中我有文件上载控件和按钮控件,单击按钮,我需要在updatepanel中的fileupload控件中上传的文件.
确切的情况,我有第8个标签,每个标签包含了太多的信息,其中一个选项卡是附件,当添加呈现出新的附件模式弹出的用户点击,莫代尔包含的UpdatePanel和我都FileUpload控件在DetailsView DetailsView控件,当用户点击保存按钮,detailsview插入事件触发,在插入事件中我需要我上传的文件.
请注意,我的页面很重,我不想要完整的postBack.
有没有人有这个问题的解决方案?
感谢您的帮助......
我有一个在ASP.NET Panel中放置的gridview.面板和Gridview都在UpdatePanel中.gridview中有一列导致部分PostBacks.我想在这些回发上保持Panel Scroll位置.有什么办法吗?问候.
我的任务是帮助提高asp.net(4.5)webforms应用程序的性能,不幸的是使用了updatepanels. 他们真的很邪恶. 但摆脱它们并不是那么简单,因为系统与一大堆东西捆绑在一起.我已经能够摆脱一些不必要的更新面板.
无论如何,这是一个CRM类型的系统,所以想象一下你去一个客户的详细信息页面.在客户的详细信息页面中,您可以获得一些常规客户信息.页面底部有标签.例如,客户详细信息页面可以包含适用于该客户的"联系人"选项卡,客户销售的"产品",客户的"评级"等.这些选项卡中的每一个基本上都是div,并且它周围是一个更新面板.最初只加载第一个选项卡.当您单击选项卡时,将进行异步调用,该调用将使用数据加载选项卡.所以基本上你有一个看起来像这样的页面:伪代码:
updatepanel for entire page
html
<!-- tabs -->
updatepanel for contacts sub panel
contacts html
/updatepanel
updatepanel for products sub panel
products html
/update panel
updatepanel for ratings sub panel
ratings html
/update panel
/updatepanel end the entire page
Run Code Online (Sandbox Code Playgroud)
提到的选项卡是div,基本上是jquery选项卡.起初我注意到页面上的每个更新面板都updatemode设置为always.当我需要更新面板更新时,我立即更改了updatemodeto conditional并显式调用Update().一个非常小的改进.然后我注意到初始更新面板(用于整个页面的面板)的ChildrenAsTrigger属性设置为true ...所以我将其更改为false.非常小的改进.
然后我再次开始测试页面,看看性能如何...仍然非常糟糕.实际上,当页面首次加载并且第一个选项卡加载页面时非常快.当我单击另一个选项卡时(它通过异步进程加载子面板数据,通过调用隐藏按钮服务器端事件来加载数据).所以这绝对不是真正的ajax,但嘿,它是我们拥有的.所以基本上服务器端事件只是将一些数据绑定到该选项卡上的网格.获取数据的性能绝对正常 - 这不是我的问题.
我现在的问题是,当我向上和向下滚动页面时,性能开始下降.一旦我点击另一个选项卡或另外2-3个不同的选项卡获取数据的性能仍然很棒..但在我获得数据后我滚动页面它的可怕性.滚动条有时会跳转,因为它无法跟上我想要浏览页面的速度.
除了完全转储更新面板之外,我不知道还有什么办法可以加速这个页面,但是有太多的工作和时间来做这件事.到目前为止,我尝试了以下内容:
always为conditionalchildrenastriggers了false我还能做些什么来解决这个问题或者还有什么可能导致延迟缓慢?如上所述,获取数据的速度非常快,当我上下移动(滚动)页面时,这是非常不稳定的. 我按照msdn的建议更新面板如何刷新.
我仍然在努力寻找更好的方法.我试过用这个:
http://aspadvice.com/blogs/robertb/archive/2005/11/16/13835.aspx
这允许我处理服务器端的视图状态.效果是html标记已经摆脱了所有的视图状态信息,然而,我仍然有的问题还没有解决的事实是,当我继续通过页面上的触发事件做异步回发时,我的页面减慢了.我的意思是减速是因为我向上/向下滚动页面表现非常糟糕.当我滚动时,滚动条基本上可以跟上我.因此,即使在客户端页面上摆脱生成的视图状态信息,我仍然遇到滚动条非常慢的问题.这又发生在页面上的事件,例如过滤器/点击事件或网格上的排序或页面索引更改(基本上任何导致异步回发的事件).
如果有人有其他想法,请随意加入.
如何判断方法是否在AJAX回发的上下文中运行(即作为UpdatePanel(异步)回发的结果)?
根据egoldin Page.IsAsync是一个非常常见的混淆,与AJAX完全无关.
正确的方法是使用ScriptManager.GetCurrent(页面).IsInAsyncPostBack.
根据Microsoft的说法,FileUpload控件与AJAX UpdatePanel不兼容.
我知道可以将PostBackTrigger添加到表单的提交按钮,如下所示:
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
Run Code Online (Sandbox Code Playgroud)
问题在于,这会强制表单执行完整的回发,从而避免了首先使用UpdatePanel的整个过程.是否有解决此问题的方法不会导致整个页面刷新?
要求
我正在尝试上传文件,只要用户选择它.我必须满足以下要求:
onchange)事件.目前的代码
以下是我的视图文件的外观:
<asp:UpdatePanel ID="upData" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div style="width: auto; float: right;">
<asp:Button ID="btnFileImportSkin" CssClass="ButtonSkin AddButton" Text="Import" Style="position: absolute; z-index: 2;" runat="server" OnClientClick="Javascript:onImport(); return false;" />
<asp:FileUpload ID="fileImport" Visible="false" Style="position:relative; opacity:0;" runat="server" onchange="Javascript:onFileSelected();" />
<%-- onchange="Javascript:this.form.submit();" /> --%>
<%-- <asp:Button ID="btnUpload" runat="server" OnClientClick="Javascript:alert('Uploading...'); __doPostBack('<%= btnUpload.ID %>', ''); return false;" /> --%>
<asp:Button ID="btnUpload" OnClick="btnUpload_Click" runat="server" />
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
相关的Javascript:
<script type="text/javascript">
function onImport() {
var …Run Code Online (Sandbox Code Playgroud) asp.net ×10
updatepanel ×10
ajax ×4
asp.net-ajax ×4
file-upload ×3
jquery ×2
postback ×2
.net ×1
c# ×1
javascript ×1
scroll ×1
webforms ×1