測試一:
一般我們使用 LinkButton 控件時,就直接放在前臺,例如我們建2個頁面 Test1 和 Test2,然後在 Test1.aspx 裏面這樣寫:
<asp:LinkButton runat="server" ID="ltn" Text="這是Test1頁面" OnClick="ltn_Click"></asp:LinkButton>
然後在後臺頁面 Test1.aspx.cs 裏這樣寫:protected void ltn_Click(object sender, EventArgs e)
{
Response.Write("<script>window.location.href='Test2.aspx'</script>");
}
效果如下:
點擊之後進入 Test2 頁面
測試二:
當我們同時使用 UpdataPanal 和 LinkButton 時,比如我們加入一個當前系統時間在 Test1 前臺
<asp:ScriptManager runat="server" ID="ScriptManager_Time"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel_Time" runat="server">
<ContentTemplate>
<asp:Timer ID="SystemTime" runat="server" Interval="1000" OnTick="SystemTime_Tick"></asp:Timer>
<asp:Label ID="LabelTime" runat="server" Text="" ForeColor="#037A74" Font-Bold="true"></asp:Label>
<asp:LinkButton runat="server" ID="ltn" Text="這是 Test1 頁面" OnClick="ltn_Click"></asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
後臺 Test1.aspx.cs 裏這樣寫
protected void Page_Load(object sender, EventArgs e)
{
LabelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
protected void SystemTime_Tick(object sender, EventArgs e)
{
LabelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
protected void ltn_Click(object sender, EventArgs e)
{
Response.Write("<script>window.location.href='Test2.aspx'</script>");
}
效果如下:
點擊之後,我們可以看到頁面沒有跳轉,爲什麼會不跳轉呢???怎麼才能跳轉呢,其實只要把下面這個改一下就行了
protected void ltn_Click(object sender, EventArgs e)
{
Response.Redirect("Test2.aspx");
//Response.Write("<script>window.location.href='Test2.aspx'</script>");
}
結果我們可以看到,頁面又可以跳轉到 Test2 頁面了
測試三:
當我們在後臺動態添加多個 LinkButton 並同時使用 UpdataPanal 時,例如:
<asp:ScriptManager runat="server" ID="ScriptManager_Time"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel_Time" runat="server">
<ContentTemplate>
<asp:Timer ID="SystemTime" runat="server" Interval="1000" OnTick="SystemTime_Tick"></asp:Timer>
<asp:Label ID="LabelTime" runat="server" Text="" ForeColor="#037A74" Font-Bold="true"></asp:Label>
<asp:Label ID="Label1" runat="server" Text="這是 Test1 頁面 " Font-Bold="true"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
Test1.apsx.cs 頁面裏這樣寫:
protected void Page_Load(object sender, EventArgs e)
{
LabelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
test();
}
protected void SystemTime_Tick(object sender, EventArgs e)
{
LabelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
protected void test()
{
for (var i = 0; i < 10; i++ ) {
LinkButton ltn = new LinkButton();
ltn.ID = "ltn"+i;
ltn.Text = "按鈕"+i+" ";
ltn.Style.Add("text-decoration", "none");
ltn.Click += ltn_Click; //添加事件
UpdatePanel_Time.ContentTemplateContainer.Controls.Add(ltn); //記得加上 using System.Web.UI.HtmlControls
}
}
protected void ltn_Click(object sender, EventArgs e)
{
Response.Redirect("Test2.aspx");
}
效果如下:
點擊按鈕0到4,都會跳轉到 Test2 頁面。
如果想判斷是哪個 LinkButton 點擊的,可以改成以下這樣
protected void test()
{
for (var i = 0; i < 5; i++ ){
LinkButton ltn = new LinkButton();
ltn.ID = "ltn"+i;
ltn.Text = "按鈕"+i+" ";
ltn.Style.Add("text-decoration", "none");
ltn.CommandName = "按鈕" + i; //加上這個
ltn.Click += ltn_Click;
UpdatePanel_Time.ContentTemplateContainer.Controls.Add(ltn); //記得加上 using System.Web.UI.HtmlControls
}
}
protected void ltn_Click(object sender, EventArgs e)
{
LinkButton lbl = sender as LinkButton;
for (int i = 0; i < 5; i++){
if (lbl.CommandName.Equals("按鈕" + i)){
Response.Redirect("Test2.aspx");
}
}
}
注意:test()一定要放在Page_Load 裏面,否則一樣不能跳轉