我将大量数据填充到Asp.net
转发器控件中。我需要实现一个" loading"消息,直到数据加载。我尝试使用Updatepanel/Updateprogress
组合,但到目前为止,UpdateProgress
文字无法显示。
这是我的代码。 Repeater
控件构建并加载jquery datatable:
<div style="clear:both;padding-top:15px;">
<asp:UpdateProgress ID="UpdateProgress1" runat="Server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate >
Please wait ...
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Repeater runat="server" ID="rptGrid">
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" border="0" class="display" id="Grid">
<thead>
<tr>
<th>Name</th>
<th>Location</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr class='nondraft'>
<td><%# Eval("EmployeeName") %></td>
<td><%# Eval("Location")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</ContentTemplate>
</asp:UpdatePanel>
</div>
知道我做错了什么吗? 感谢
答案 0 :(得分:2)
这是因为您没有在代码中添加异步回发。您可以在
之后添加该代码</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="IdName" EventName="YourEventName" />
</Triggers>
</asp:UpdatePanel>
您需要编写控件ID,即您需要显示更新进度的控件,如按钮。
答案 1 :(得分:0)
如果我理解正确,您希望在首次加载页面时显示加载消息。
在这种情况下,UpdateProgress将没有任何帮助。 UpdateProgress仅在更新面板中出现异步回发时显示。
一种方法是使用ajax加载转发器数据。因此,第一次加载时,页面将几乎为空,并带有加载消息。然后进行ajax调用以获取数据
我依稀记得其他黑客,比如使用iframe,或者可能是从javascript强制执行__doPostBack或者从javascript进行重定向。
答案 2 :(得分:0)
您应该使用模态弹出扩展器来显示“Please Wait ....”消息,直到您的转发器正在加载。在您的情况下,由于没有发生实际的回发,因此无法触发更新进度。您可以访问http://www.codeproject.com/Articles/34996/ASP-NET-AJAX-Control-Toolkit-ModalPopupExtender-Co以获取客户端代码以打开和关闭弹出窗口。
但是如果您想要使用更新进度,请执行以下操作:
1)在更新面板中添加一个按钮并将其隐藏。
<asp:Button ID="YourButton" runat="server" Visible="false" />
2)添加以下javascript代码:
function Update_UpdatePaanel()
{
document.getElementById('<%= YourButton.ClientID %>').click();
}
希望这有帮助。