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标签。并尝试使用睡眠方法周期性地增加宽度,以创建进度条。我只能在循环结束时看到进度条。只想看到进度条的宽度一步一步地增加。here.Please有什么问题?有谁能帮我吗?
发布于 2014-06-05 22:08:23
您将无法使用服务器端代码来完成此操作。这将不得不在客户端完成,很可能是在javascript中。
可以将ASP.NET看作是构建一个发送到浏览器的大字符串。在页面的整个生命周期中,您所做的每一件事都只是构建一个单独的字符串,该字符串在最后发送到浏览器。因此,无论代码在Prerender事件完成时让页面处于什么状态,都是它将被交付给浏览器的状态。这就是为什么你只能看到进度条的“最终”状态。
这里有一个指向jQuery进度条的链接,您可以将其用作起点。http://jqueryui.com/progressbar/
发布于 2014-06-05 22:18:30
您正在尝试使用服务器端代码来执行将在客户端执行的操作。服务器端代码将简单地将静态HTML输出到客户端(即浏览器),然后停止执行。您可以在HTML呈现之前对其进行操作;但在此之后,您需要使用Javascript (如果这是客户端语言)来执行这种对页面的交互式操作。
您的代码基本上是在页面被提供给客户端之前执行的,因此您只能看到此操作的最终结果。
在OnLoad事件上(即页面加载到客户端之后),您可以使用Javascript执行此C#代码的变体以实现此效果。但是,使用jQuery进行此操作要简单得多。
发布于 2014-06-05 22:37:39
正如其他人所提到的,ASP技术在服务器上进行一些处理,并将HTML响应发送回客户端。因此,您需要添加客户端Javascript代码来对UI进行更改。
这里有一种方法(使用JQuery),您可以尝试使用(Fiddle: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 millisecondshttps://stackoverflow.com/questions/24062321
复制相似问题