1,问题描述
今天在项目中碰见了一个局部页面刷新的问题,由于我的Master页分为三块,即三个Content,第一部分是头,第二部分是左边导航,第三部分是根据左边导航变化的内容。
现在点击左边导航后,整个页面都会进行刷新。
2,达到的要求
我想在点击导航条的时候,只刷新右边的内容。
3,实现的方法
我得ScriptManager是放在Master页里的
在内容页加入如下代码:
protected void Page_LoadComplete(object sender, EventArgs e)
{
ScriptManager ScriptManager1 = (ScriptManager)this.Master.FindControl("ScriptManager1");
//ScriptManager1是模板上面ScriptManager控件的id值
ScriptManager1.RegisterAsyncPostBackControl(lbtn1);
ScriptManager1.RegisterAsyncPostBackControl(lbtn2);
}
在看看导航条按钮的点击事件
protected void lbtn1_Click(object sender, EventArgs e)
{
TextBox1.Text = "3333333333333333333";
up1.Update();
}
在就是Web页的代码
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderLeft" runat="server">
<br />
<asp:LinkButton ID="lbtn1" runat="server" OnClick="lbtn1_Click">LinkButton</asp:LinkButton>
<br />
<asp:LinkButton ID="lbtn2" runat="server" OnClick="lbtn2_Click">LinkButton</asp:LinkButton>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolderRight" runat="server">
<br />
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional" RenderMode="Inline">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server">111111111111</asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<br />
</asp:Content>
4,效果图
点击前
点击后
Ok,初步达到要求。
5 其他情况下地方法。
当导航条和内容在一个Content中,也就是我得第二个和第三个Content合二为一的时候
我们可以在Web页加入如下代码就可以了。
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional" RenderMode="Inline">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server">111111111111</asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lbtn1" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="lbtn2" EventName="Click" />
</Triggers>
</asp:UpdatePanel>