测试一:
一般我们使用 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 里面,否则一样不能跳转