Maybee我想這是錯誤的方式,我知道頁面呈現併發送到客戶端(網頁瀏覽器)。但我真的需要了解這一點。ASP.NET 4.0 Webforms - 異步更新3面板
問題 如何更新我的三個更新面板異步?爲了模擬這個,我創建了一個for循環,每找到一個正確的數字並且觸發事件,每次都會增加一個循環。 所以我想要做的是能夠在web瀏覽器中看到這些更新何時完成。 的時間跨度會是這樣的:
TIME
0,0235(只是一個數字toshow真的發生快速)
在頁面上會出現什麼情況? 幾乎瞬間第一個標籤獲取與7號 TIME
0,0235 +1秒= 1,0235 頁面上會發生什麼更新? 幾乎瞬間第二標籤上獲得的有8個 TIME
0,0235 +1秒= 2,0235 頁面上會發生什麼更新? 幾乎瞬間第三標籤獲得與9號
更新我ahve造訪的頁面,首先告訴你一些文本和一個幾秒鐘,他們告訴你一個圖後,當請求已完成加載?所以一定有一個方法可行嗎?
繼承人我的代碼,我沒有發佈我的CounterEventArgs類它的工作原理,不影響問題。
這裏是我的Index.aspx - 代碼隱藏 公共部分類_Default:System.Web.UI.Page { 私人的TestClass _testet;
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager1.RegisterAsyncPostBackControl(Button1);
}
void _testet_CounterFoundNumber(object sender, CounterEventArgs e)
{
switch (e.labelnumber)
{
case 1:
Label1.Text = e.positionen.ToString();
break;
case 2:
Label2.Text = e.positionen.ToString();
break;
case 3:
Label3.Text = e.positionen.ToString();
break;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
testClass testet = new testClass();
_testet = testet;
_testet.CounterFoundNumber += new testClass.CounterEventArgsHandler(_testet_CounterFoundNumber);
_testet.count();
}
}
和源
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="updatepanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="updatepanel2" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</form>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="updatepanel3" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
<ContentTemplate>
而且最後我的TestClass
public class testClass
{
public event CounterEventArgsHandler CounterFoundNumber;
public delegate void CounterEventArgsHandler(object sender, CounterEventArgs e);
public int y = 1;
protected virtual void OnCounterFoundNumber(CounterEventArgs e)
{
if (CounterFoundNumber != null)
CounterFoundNumber.BeginInvoke(this, e, new AsyncCallback(this.ResultFoundNumber), null);
}
public void count()
{
for (int i = 0; i < 10; i++)
{
if (i >= 7)
{
OnCounterFoundNumber(new CounterEventArgs(i,y));
y++;
System.Threading.Thread.Sleep(1000);
}
}
}
public void ResultFoundNumber(IAsyncResult ar)
{
CounterFoundNumber.EndInvoke(ar);
}
}
引用w3school是個壞主意。 http://w3fools.com/ –
@Ravi:謝謝你的信息。是否有任何其他來源可以很簡單地解釋爲w3schools? –
它可能不是簡單的,但準確:) https://developer.mozilla.org/en-US/docs/DOM/window.setInterval –