日期:2014-05-18  浏览次数:20547 次

asp.net ajax中当UpdateProgress出现的时候(也就是正在运行中时),Updatepanel不再更新了,有没有好办法?

有一个按钮事件如下,激发它时UpdateProgress出现,但在sleep   前我更新了   Label1.Text的值,能不能在这sleep   的5秒完成之前,更新了lable1.Text的值呢?

void   Button1_Click(object   sender,   EventArgs   e)
        {
             
                Label1.Text   =   DateTime.Now.ToLocalTime().ToString();    
                System.Threading.Thread.Sleep(5000);
          }

现在的现象是只有在sleep   5秒完成后才能更新Label1的值,有什么好办法吗?

------解决方案--------------------
唯一的办法是用javascript,这个涉及到页面执行顺序的问题:

(1)在aspx文件的 <body> 标签下键入如下代码:
<script type= "text/javascript ">
function SetLabelTime()
{
var d = new Date();
document.getElementByID( " <%=Label1.ClientID%> ").value = d.toLocalString();
}
</script>

(2)在Button1的OnClientClick属性中,加上:SetLabelTime();
(3)你原来的代码变成:
void Button1_Click(object sender, EventArgs e)
{

System.Threading.Thread.Sleep(5000);
}

(4)可能Label和Button不能在同一个UpdatePanel中,这个我没试过。
------解决方案--------------------
在服务器端的代码是应该整个执行完之后才会向游览器发送所有生成的HTML, 而不是执行一段就发送一段.所以不要想当然认为这个Label一定会在某个指定时间生成.
------解决方案--------------------
同意楼上的。对待初学者尤其需要多一些正确观念的描述。
------解决方案--------------------
佩服bwangel(永远的裤衩),一语道破ASP.NET的页面模型。就好像aspx页面表面上类似做表示层的jsp页面,其实有本质不同。前者的codebehind文件所包含的Page实例不是singlon的,而jsp被容器翻译后的servlet实例却是singlon的。
这是俺在比较中发现的,如有不对,还请各位大侠指出!!!
------解决方案--------------------
2楼说的对,,这是win和web的区别
------解决方案--------------------
UP!学习中 !
------解决方案--------------------
在服务器端的代码是应该整个执行完之后才会向游览器发送所有生成的HTML, 而不是执行一段就发送一段.所以不要想当然认为这个Label一定会在某个指定时间生成.


up