關於 LinkButton 放在 UpdataPanal 裏面的一些問題

測試一:

一般我們使用 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 裏面,否則一樣不能跳轉


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章