for (i = 0; i < 10; i++)
{
len = (i*30).ToString();
System.Threading.Thread.Sleep(200);
progressbar.Style.Add("width", len + "px");
txtlbl.InnerHtml = len+'%';
System.Threading.Thread.Sleep(200);
//htmlDivControl.Style["width"] =Convert.ToString("10");
//Item("width") = i.ToString + "px"
}
这是我在C#中代码背后的代码。我在html中创建了一个div标签。并尝试使用sleep方法定期增加宽度以创建进度条。 我只能在循环结束时看到进度条。 只想逐步查看进度条的宽度增加。 这有什么问题。请任何人帮助我。
答案 0 :(得分:2)
您无法使用服务器端代码执行此操作。这必须在客户端完成,很可能是在javascript中。
将ASP.NET视为构建一个发送到浏览器的大字符串。当页面经历它的生命周期时,你所做的一切只是构建一个单独的字符串,最后发送到浏览器。因此,在Prerender
事件完成时代码离开页面的状态是它将被传递到浏览器的状态。这就是为什么你只看到&#34; final&#34;进度条的状态。
这是一个jQuery进度条的链接,您应该可以将其作为起点。 http://jqueryui.com/progressbar/
答案 1 :(得分:1)
您正在尝试使用服务器端代码来执行将在客户端执行的操作。服务器端代码将简单地将静态HTML输出到客户端(即浏览器),并停止执行。您可以在呈现之前操纵HTML;但在此之后,您需要使用Javascript(如果这是客户端语言)来执行页面的这种交互式操作。
您的代码基本上是在将页面提供给客户端之前执行,因此您只能看到此操作的最终结果。
在OnLoad
事件上(即在客户端加载页面之后),您可以使用Javascript执行此C#代码的变体来实现该效果。但是,使用jQuery进行这种操作会更简单。
答案 2 :(得分:0)
正如其他人所提到的,ASP技术在服务器上进行了一些处理,并将HTML响应发送回客户端。因此,您需要添加客户端Javascript代码才能对UI进行更改。
这是一种可以尝试搞乱的方法(使用JQuery)(小提琴:http://jsfiddle.net/5arx/g8kF9/)。基本上它使用setInterval
函数每隔x毫秒执行一些代码。
<div class='expando' id='expando'>
</div>
<p id='pOut'>0s</p>
var msg = 20;//global
setInterval(
function ()//the code that will be executed
{
$('#pOut').text(msg++ + 's');
$('#expando').css('height', msg * 1.5);
}
, 1000);//interval time in milliseconds