关于 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 里面,否则一样不能跳转


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