0 Comments

给用户提供反馈

发布于:2012-12-05  |   作者:广州网站建设  |   已聚集:人围观
     尽管回送通常导致视觉问题,但它们也有一大优点:用户可以看到正在发生的事情。UpdatePanel让这变得有点困难。在正在发生的情况已经发生之前,用户没有视觉线索。要告诉用户在处理他们的请求时再坚持几秒钟,可以使用UpdateProgress控件。
属    性 属 性 描 述
AssociatedUpdatePanelID 设置哪个UpdatePanel控件产生的回送会
显示UpdateProgress的内容
DisplayAfter 该属性确定控件在显示其内容之前等待的
时间(以毫秒为单位)。当刷新时间非常短暂以
至于通知消息过多时,这非常有用。默认值是500毫秒,也就是半秒钟
DynamicLayout 该属性确定控件隐藏时是否占用屏幕空间。
它再直接映射到CSS display: none;或者前
面见过的visibility: hidden;属性
 
       可以使用AssociatedUpdatePanelID属性将UpdateProgress控件连接到UpdatePanel。当相关UpdatePanel忙于刷新时,就会显示它在<ProgressTemplate>元素中定义的内容。通常要在模板中放入像"正在…请等待…"这样的文本或动画图像(当然也接受其他标记)来让用户知道正在发生的事情。
使用UpdateProgress控件示例。本例将把ScriptManager控件放在母版页中。
(1) 新建一个Web站点Ex10_2。
(2) 在【解决方案资源管理器】右击网站根目录,在弹出的快捷菜单中选择【添加新项】命令,再在弹出的对话框中选择【母版页】选项,添加一个MasterPage.master文件。在其<form>标记和<div>标记之间添加一个ScriptManager控件,方法就是将它从【工具箱】拖动到页面的源代码中。VWD 2008自动生成以下代码:

  1. <form id="form1" runat="server">
  2.  <asp:ScriptManager ID="ScriptManager1" runat="server">
  3.  </asp:ScriptManager>
  4.  <div>
  5.      <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
  6.       </asp:ContentPlaceHolder>
  7.  </div>
  8. orm>
(3) 在【解决方案资源管理器】右击网站根目录,在弹出的快捷菜单中选择【添加新项】命令,再在弹出的对话框中选择【Web窗体】选项,添加一个Default2.aspx页面,注意要选中【选择母版页】复选框。在其【源】视图中添加如下内容:

  1. <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
  2.  UpdateProgress控件的使用示例:  
  3. </asp:Content>
(4) 切换到Default2.aspx的【设计】视图窗口,从【工具箱】的AJAX  Extensions类别中拖放一个UpdatePanel控件到页面中;并将一个Label和一个Button控件从【工具箱】的【标准】类别中拖入UpdatePanel控件内。设置Button控件的Text属性为【获取时间】。之后,再在UpdatePanel控件外添加一个UpdateProgress控件到页面,在其中输入文本"正在获取服务器时间,请等待…"。在其【源】视图中,VWD 2008自动添加如下内容:

  1. <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
  2. Runat="Server">
  3.     <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  4.         <ContentTemplate>
  5.             <asp:Label ID="Label1" runat="server"  Text="Label"></asp:Label>
  6.             <br /><br />
  7.             <asp:Button ID="Button1" runat="server" Text="Button"
  8. onclick="Button1_Click" />
  9.             <br />
  10.         </ContentTemplate>
  11.     </asp:UpdatePanel>
  12.     <asp:UpdateProgress ID="UpdateProgress1" runat="server">
  13.                 <ProgressTemplate>
  14.                     正在获取服务器时间...  
  15.                 </ProgressTemplate>
  16.             </asp:UpdateProgress>
  17. </asp:Content>
(5) 清除Label控件的Text属性。要做到这一点,请右击其【属性】窗口中的Text属性,然后选择【重置】。
(6) 要看见UpdateProgress控件的消息,需要一点时间。双击Button控件,为它们添加默认的事件处理程序如下:

  1.    protected void Button1_Click(object sender, EventArgs e)  
  2.     {  
  3.         System.Threading.Thread.Sleep(5000);  
  4.         Label1.Text = DateTime.Now.ToString();  
这个代码将页面的执行暂停5秒(传递给Sleep方法的数字以毫秒为单位),因此可以仔细检查UpdateProgress控件中的消息。在生产代码中,应该删除这一行,因为它极大地减缓了页面执行速度,而又没有给页面添加任何值。
(7) 保存所有修改,然后在浏览器中请求Default2.aspx页面。单击按钮,UpdateProgress控件里<ProgressTemplate>元素中的内容将显示在页面上,3秒钟后标签显示新的时间,<ProgressTemplate>元素中的内容消失。执行结果如图10-3和图10-4所示。
图10-3  【例10-2】执行时
 
标签:
飞机