【求助】ASP.NET c# 实现局部刷新

jerkface 2013-10-14 03:34:33
想要点击不同按钮显示对应的最新消息,就是不刷新整个页面,只刷新局部消息的效果。


<head id="Head1" runat="server">
<title>豆瓣酱网</title>
<style type="text/css">
.geren{ background-image :url('image/geren.jpg')}
.body {height :480px; width :1219px; background-image :url('image/201.jpg');
color: #3366CC;
}
.button
{
border-style: none; /*去掉边框*/

border-width: medium; /*图片宽带*/
background: url('image/dian.gif') no-repeat left top; /*图片路径*/
height:62px; /*图片高度*/

}


</style>
</head>
<body>
<form id="form2" runat="server">
<div id="Div1" class="geren" runat="server" style="height: 100px">



<asp:ImageButton ID="ImageButton1" runat="server" Height="92px" Width="106px" />

<asp:Label ID="Label2" runat="server" Text="Uid:" style="margin-top:10px;"></asp:Label>

<asp:Label ID="Label3" runat="server" Text="Label:"></asp:Label>

</div>
<div class= "body">

<div id="lanmu" runat="server" style="margin-left:150px ; height:80px; width: 1219px">

<asp:Button ID="Button2" runat="server" Text="读书" CssClass="button" style="margin-top :10px; margin-left :20px; font-size: small; font-weight: 700; color: #C0EC13;"
Height="50px" Width="95px"/>

<asp:Button ID="Button3" runat="server" Text="影视" CssClass="button" style="margin-top :10px; margin-left :80px; font-size: small; font-weight: 700; color: #C0EC13;"
Height="50px" Width="95px" />

<asp:Button ID="Button4" runat="server" Text="动漫" CssClass="button" style="margin-top :10px; margin-left :80px; font-size: small; font-weight: 700; color: #C0EC13;"
Height="50px" Width="95px"/>

<asp:Button ID="Button5" runat="server" Text="音乐" CssClass="button" style="margin-top :10px; margin-left :80px; font-size: small; font-weight: 700; color: #C0EC13;"
Height="50px" Width="95px" />

<asp:Button ID="Button6" runat="server" Text="随记" CssClass="button" style="margin-top :10px; margin-left :80px; font-size: small; font-weight: 700; color: #C0EC13;"
Height="50px" Width="95px"/>
</div>
<div id="zhuangtai" runat="server"
style="margin-left:120px; height:300px; width: 890px">


<asp:ImageButton ID="ImageButton2" runat="server" Height="80px" Width="90px" />



<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>



</div>

</div>
</form>
</body>
...全文
4266 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
qpp_2575406355 2014-11-22
  • 打赏
  • 举报
回复
ASP.NET实现局部刷新示例 <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <table border="0" cellpadding="0" cellspacing="0" style="width: 477px; height: 48px;"> <tr> <td style="width: 88px; height: 24px; text-align: right"> <span style="font-size: 10pt">会 员 名: </span> </td> <td style="height: 24px; text-align: left; width: 509px;" colspan="2"> <asp:TextBox onFocus="tName();" ID="txtName" runat="server" Width="89px" AutoPostBack="True" OnTextChanged="txtName_TextChanged"></asp:TextBox><span style="color: #ff0000">*</span><asp:RequiredFieldValidator ID="rfvName" runat="server" ErrorMessage="用户名不能为空" Width="1px" ControlToValidate="txtName">*</asp:RequiredFieldValidator> <asp:Label ID="labUser" runat="server" Text="只能输入数字、字母、下划线" Width="159px" Font-Size="12px"></asp:Label> <asp:Label ID="labIsName" runat="server" Font-Size="12px"></asp:Label></td> </tr> </table>//codego.net/tags/22/1/ </ContentTemplate> </asp:UpdatePanel> <asp:TextBox ID="txtPass" runat="server" onFocus="tPass();" onchange="passHint()" TextMode="Password" Width="88px"></asp:TextBox><span style="color: #ff0000">*</span></td> <td colspan="2" style="height: 38px"> <table id="tab" border="0" cellpadding="0" cellspacing="0" style="width: 182px"> <tr> <td style="width: 276px"> <span style="font-size: 10pt">密码强度:</span></td> <td id="r" style="width: 100px"> <asp:Label ID="labEbb" runat="server" Text="弱" Width="18px" Font-Size="12px"></asp:Label></td> <td style="width: 92px"> <asp:Label ID="labStrong" runat="server" Text="强" Width="18px" Font-Size="12px"></asp:Label></td> <td style="width: 106px"> </td> </tr> </table> </td> </tr> <tr style="color: #000000"> <td style="width: 68px; text-align: right;"> <span style="font-size: 10pt">确认密码:</span></td> <td style="width: 13px; text-align: left"> <asp:TextBox ID="txtQpass" runat="server" TextMode="Password" Width="89px"></asp:TextBox><span style="color: #ff0000">*</span></td> <td style="width: 127px"> <asp:CompareValidator ID="covPass" runat="server" ControlToCompare="txtPass" ControlToValidate="txtQpass" ErrorMessage="两次密码不一致" Font-Size="12px"></asp:CompareValidator></td> <td style="width: 120px; color: #000000;"> </td> </tr> <tr style="color: #000000"> <td style="width: 68px; text-align: right;"> <span style="font-size: 10pt">昵       称:</span></td> <td style="width: 13px; text-align: left"> <asp:TextBox ID="txtNickname" runat="server" onFocus="tNickName();" Width="89px"></asp:TextBox><span style="color: #ff0000">*</span></td> <td style="width: 127px"> </td> <td style="width: 120px"> </td> </tr> <tr> <td style="width: 68px; height: 21px; text-align: right;"> <span style="font-size: 10pt">性       别:</span></td> <td style="width: 13px; height: 21px; text-align: left"> <asp:RadioButtonList ID="radlistSex" runat="server" RepeatDirection="Horizontal" Width="95px" Font-Size="12px"> <asp:ListItem Selected="True"> 男</asp:ListItem> <asp:ListItem>女</asp:ListItem> </asp:RadioButtonList></td> <td style="width: 127px; height: 21px"> </td> <td style="width: 120px; height: 21px"> </td> </tr> <tr> <td style="width: 68px; height: 24px; text-align: right;"> <span style="font-size: 10pt">电       话:</span></td> <td style="width: 13px; text-align: left; height: 24px;"> <asp:TextBox onFocus="tPhone();" ID="txtPhone" runat="server" Width="89px"></asp:TextBox></td> <td style="width: 127px; height: 24px;"> </td> <td style="width: 120px; height: 24px;"> </td> </tr> <tr> <td style="width: 68px; text-align: right; height: 23px;"> <span style="font-size: 10pt">E - mail :</span></td> <td style="width: 13px; text-align: left; height: 23px;"> <asp:TextBox ID="txtEmail" onFocus="tEmail();" runat="server" Width="89px"></asp:TextBox><span style="color: #ff0000">*</span></td> <td style="width: 127px; height: 23px;"> <asp:RegularExpressionValidator ID="revEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="邮件格式不正确" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Font-Size="12px"></asp:RegularExpressionValidator></td> <td style="width: 120px; height: 23px;"> </td> </tr> <tr> <td style="width: 68px; text-align: right;"> <span style="font-size: 10pt">所在城市:</span></td> <td style="width: 13px; text-align: left"> <asp:TextBox ID="txtCity" onFocus="tCity();" runat="server" Width="89px"></asp:TextBox></td> <td style="width: 127px"> </td> <td style="width: 120px"> </td> </tr> <tr> <td colspan="2" style="height: 24px; text-align: center"> <asp:Button ID="btnRegister" runat="server" OnClick="btnRegister_Click" Text="注 册" />       <asp:Button ID="btnReturn" runat="server" Text="返 回" CausesValidation="False" PostBackUrl="~/Default.aspx" /> </form>
c02645 2014-11-21
  • 打赏
  • 举报
回复
1、Updatepannel 2、CallBack回调,System.Web.UI.ICallbackEventHandler 3、ajax+ashx
ching126 2014-11-20
  • 打赏
  • 举报
回复
引用 4 楼 xianfajushi 的回复:
http://blog.csdn.net/xianfajushi/article/details/5928136
非常详细,非常好,非常感谢,很完美的解决了我的问题
richard_1015 2014-11-20
  • 打赏
  • 举报
回复
使用 ajax 可以实现
wanceming 2013-10-23
  • 打赏
  • 举报
回复
ajax就是为了实现局部刷新的效果
qydvip 2013-10-22
  • 打赏
  • 举报
回复
引用 3 楼 Mydal 的回复:
Updatepannel
+1
cgyqu 2013-10-22
  • 打赏
  • 举报
回复
用ajax的无刷
Huavy 2013-10-21
  • 打赏
  • 举报
回复
我的个人建议也是使用Ajax,为了简便你可以用JQuery的Ajax方法,我把你的问题做一下整理: 前台代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>豆瓣酱网</title>
    <style type="text/css">
        .geren
        {
            background-image: url('image/geren.jpg');
        }
        .body
        {
            height: 480px;
            width: 1219px;
            background-image: url('image/201.jpg');
            color: #3366CC;
        }
        .button
        {
            border-style: none; /*去掉边框*/
            border-width: medium; /*图片宽带*/
            background: url('image/dian.gif') no-repeat left top; /*图片路径*/
            height: 62px; /*图片高度*/
        }
    </style>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $("#Button2").click(function () {
                $.ajax({
                    url: "这里填写要请求的地址", //
                    success: function (data) {  //data 是返回值
                        $("#ImageButton1").attr("src", "你要的图片SRC");
                        $("#Label2").text("你要显示的Uid");
                        $("#Label3").text("你要显示的Label");
                    }
                })
                
            })
        })
    </script>
</head>
<body>
    <form id="form2" runat="server">
    <div id="Div1" class="geren" runat="server" style="height: 100px">
        <asp:ImageButton ID="ImageButton1" ClientIDMode="Static" runat="server" Height="92px"
            Width="106px" />
        <asp:Label ID="Label2" runat="server" Text="Uid:" Style="margin-top: 10px;" ClientIDMode="Static"></asp:Label>
        <asp:Label ID="Label3" runat="server" Text="Label:" ClientIDMode="Static"></asp:Label>
    </div>
    <div class="body">
        <div id="lanmu" runat="server" style="margin-left: 150px; height: 80px; width: 1219px">
            <asp:Button ID="Button2" ClientIDMode="Static" runat="server" Text="读书" CssClass="button"
                Style="margin-top: 10px; margin-left: 20px; font-size: small; font-weight: 700;
                color: #C0EC13;" Height="50px" Width="95px" />
        </div>
        <div id="zhuangtai" runat="server" style="margin-left: 120px; height: 300px; width: 890px">
            <asp:ImageButton ID="ImageButton2" ClientIDMode="Static" runat="server" Height="80px"
                Width="90px" />
            <asp:Label ID="Label1" ClientIDMode="Static" runat="server" Text="Label"></asp:Label>
        </div>
    </div>
    </form>
</body>
</html>
Ajax处理程序代码:
protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["cid"] != null)
        {
            string cid = Request.QueryString["cid"].ToString();
            //根据CID查找你要的货品信息
            //把要返回的信息组织一下,如果信息量不大,可以用字符串分割的方式直接输出
            Response.Write("......");
        }
        else
        {
            Response.Write("NULL");
        }
    }
Dotar 2013-10-21
  • 打赏
  • 举报
回复
UpdatePanel
y8932809 2013-10-21
  • 打赏
  • 举报
回复
引用 10 楼 shiyong7682719 的回复:
UpdatePanel
+1 研究研究知道了
  • 打赏
  • 举报
回复
UpdatePanel
天下在我心 2013-10-21
  • 打赏
  • 举报
回复
还是自己写ajax吧,这个是ajax的典型应用
siemens_chang 2013-10-21
  • 打赏
  • 举报
回复
发送ajax到一般处理程序 $.ajax({ type: 'POST', url: 'topdf.ashx?id=2', async: false, success: function (data) { alert(data); } } });
gongshunkai3 2013-10-18
  • 打赏
  • 举报
回复
继续 三、两个嵌套的UpdatePanel控件,外部的UpdatePanel内的控件回发只引发内部控件的更新 在页面上放一个ScriptManager和UpdatePanel控件(UpdatePanel1),在UpdatePanel1中放入一个标签控件 (lblOut)、一个按钮(Button1)和另一个UpdatePanel控件(UpdatePanel2),在UpdatePanel2控件中放一 个标签控件lblIn。 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False"> <ContentTemplate> <asp:Label ID="lblOut" runat="server" Width="158px"></asp:Label> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click2" Text="Button" /><br /> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="lblIn" runat="server" Width="148px"></asp:Label>  </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel> </ContentTemplate> </asp:UpdatePanel> 在按钮的Click事件中和(一)中的一样。 注意: 要把两个UpdatePanel控件的UpdateMode设为Conditional,把外部UpdatePanel控件的 ChildrenAsTrigger设为false。这样两个UpdatePanel控件都不会刷新,所以还要为内部的UpdatePanel控件建立触 发器,触发源指向外部UpdatePanel中的的Button1的Click事件上。 四、母版页中使用UpdatePanel控件 如果将ScriptManager控件添加在母版页上的话,那么各内容页面就没必要再添加ScriptManager控件了,只需添加UpdatePanel控件就可以了,因为母版页和内容页面将来生成的是一个页面的实例,而在一个页面上是不允许同时存在两个ScriptManager控件的。 如果ScriptManager控件没有添加在母版页上的话,那只能把ScriptManager控件添加在其中一个内容页面里。不要向每一个内容页面中添加ScriptManager控件。 1、内容页面中的UpdatePanel内的控件引起回发,只更新当前内容页面的内容。 此时按钮分别在各自的UpdatePanel控件内。 将两个内容页面内的两个UpdatePanel控件的UpdateMode设为Conditional,ChildrenAsTrigger设为True。 在按钮的Click事件中和(一)中的一样。 这样就出现各内容页的UpdatePanel内的按钮只对当前内容页起作用。 2、在母版页中的按钮引起回发,更新指定内容页的信息。 此时有两个按钮:ButtonOuter在母版页中,ButtonInner在内容页面1中。 当点击ButtonOuter时,异步更新两个内容页面的信息。当点击ButtonInner时,异步更新母版面中的UpdatePanel1中的信息。 母版页HTML代码如下: <div> 母版页3<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="lbl" runat="server" Text="Label"></asp:Label> </ContentTemplate> </asp:UpdatePanel>  <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="ButtonOuter" /><br /> ##################################################################### <table width=90%> <tr> <td bgcolor=blue> <asp:contentplaceholder id="ContentPlaceHolder1" runat="server"> </asp:contentplaceholder> </td> <td bgcolor=maroon> <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server"> </asp:ContentPlaceHolder> </td> </tr> </table> <br /> </div> 内容页面的HTML代码如下: <%@ Page Language="C#" MasterPageFile="~/MasterPage3.master" AutoEventWireup="true" CodeFile="Child3.aspx.cs" Inherits="Child3" Title="Untitled Page" %> <%@ MasterType VirtualPath="~/MasterPage3.master" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Font-Bold="True" ForeColor="White" Text="Label"></asp:Label> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="ButtonInner" /> </ContentTemplate> </asp:UpdatePanel> </asp:Content> <asp:Content ID="Content2" runat="server" ContentPlaceHolderID="ContentPlaceHolder2"> <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <asp:Label ID="Label2" runat="server" Font-Bold="True" ForeColor="White" Text="Label"></asp:Label> </ContentTemplate> </asp:UpdatePanel> </asp:Content> 母版页的CS代码如下: protected void Page_Load(object sender, EventArgs e) { ScriptManager1.RegisterAsyncPostBackControl(this.Button1); } protected void Button1_Click(object sender, EventArgs e) { Label lbl1 = (Label)this.ContentPlaceHolder1.FindControl("Label1"); lbl1.Text = DateTime.Now.ToString(); Label lbl2 = (Label)this.ContentPlaceHolder2.FindControl("Label2"); lbl2.Text = DateTime.Now.ToString(); } public string TitleInfo { get { return lbl.Text; } set { lbl.Text = value; } } 内容页面的CS代码如下: protected void Button1_Click(object sender, EventArgs e) { Label1.Text = Master.TitleInfo; Master.TitleInfo = "ContentPage1's Action"; ((UpdatePanel)Master.FindControl("UpdatePanel1")).Update(); ; } 五、用户控件中使用UpdatePanel控件 如果父页面中存在ScriptManager控件,那用户控件的页面中不应再放入ScriptManager控件了,只在用户控件中加入UpdatePanel。 其控件的回发与更新规律与使用方式与母版页一样。
gongshunkai3 2013-10-18
  • 打赏
  • 举报
回复
多个UpdatePanel控件相互引发刷新的使用 ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在,因为ScriptManger控件提供了客户端脚本生成与管理UpdatePanel的功 能。 几个重要的属性: ScriptManager控件的EnablePartialRendering属性:true-实现页面的异步局部更新;false-实现全页面的刷新。 UpdatePanel控件的RenderMode属性:InLine-UpdatePanel控件被解析成HTML的<span>标记;Block-UpdatePanel控件被解析成HTML控件的<DIV>。 UpdatePanel控件的UpdateMode属性:Always-UpdatePanel页面上任何一处发生的回发操作都会产生页局部更新;Conditional-只在特定的情况下才产页面的回发,如执行UpdatePanel控件的update()方法或在指定的触发器的操作下。 UpdatePanel控件的ChildAsTrigger属性:指示UpdatePanel内部控件引起的回发是否产生当前UpdatePanel控件的局部更新。如果UpdateMode设为Always的话,那ChildAsTrigger局性必须设为True,否则运行出错。 一、UpdatePanel内部的控件引起的回发,来更新当前UpdatePanel内部的控件内容: 1.向页面中加入ScriptManager、UpdatePanel控件和一个Label控件(Label2)。 2.在UpdatePanel中加入一个Button、一个Label(Label1)。 3.双击Button在事件处理程序中写入下列代码:Label1.Text = DateTime.Now.ToString(); 4.在Page_Load事件中写入下列代码:Label2.Text = DateTime.Now.ToString(); 5.运行页面,发现每次点击按钮都会产生异步局步刷新,只有Label1的内容发生更改,页面上的Label2时间没有发生更改。 代码如下: <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="True"> <ContentTemplate> <asp:Label ID="Label1" runat="server"></asp:Label> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> </ContentTemplate> </asp:UpdatePanel> protected void Button1_Click(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToString(); ; } protected void Page_Load(object sender, EventArgs e) { Label2.Text = DateTime.Now.ToString(); } 注意:此时的ScriptManager的EnablePartialRendering属性应设为true。UpdatePanel的UpdateMode属性应设为Always。ChildAsTrigger属性应设为true。 二、UpdatePanel控件外部的控件引起的回发,来异步更新UpdatePanel内部的内容: 虽然上面的方式能够很简单地实现异步局部更新的功能,但就性能方面考虑,我们应当只将数据确实会发生变化的控件摆放在UpdatePanel中,这就可能会出现引起回发的控件不在UpdatePanel内的情况。 有两种方式实现这种效果: a.在Page_Load方法中用ScriptManager1.RegisterAsyncPostBackControl()来注册一下要实现异步更新的控件。 b.用触发器来实现。 1、ScriptManager1.RegisterAsyncPostBackControl()注册的控件可以实现对所有的UpdatePanel控件的异步更新。 如:ScriptManager1.RegisterAsyncPostBackControl(this.Button2);实现对Button2的注 册,那此时Button2的回发就变成一个异步回发(页面不会刷新),它会导致页面上所有的UpdatePanel的内容的更新。 注意:此时的ScriptManager的EnablePartialRendering属性应设为true。UpdatePanel的UpdateMode属性应设为Always。 2、ScriptManager1.RegisterAsyncPostBackControl()注册的控件可以实现针对特定UpdatePanel控件的异步更新。 a.把页面上所有的UpdatePanel控件的UpdateMode设为Conditional。 b.ScriptManager1.RegisterAsyncPostBackControl(this.Button2);实现对Button2的注册。 c.在Button2控件的Click事件中后面加入后面的代码:UpdatePanel1.Update(); 这样Button2按钮只对UpdatePanel1控件实现的异步的局部刷新。 注意:这里的UpdatePanel的属性要设为Conditional,如果还是Always的话,会出现所有的UpdatePanel都刷新的效果。 3、触发器 如果页面上有多个UpdatePanel控件,如果要实现外部的控件的回发引发指定UpdatePanel的更新的话,那应当为要实现刷新的UpdatePanel控件建立一个触发器。 a.选中要进行局部更新的UpdatePanel控件。 b.在其属性页中点击Triggers集合属性右边的小按钮。 c.在弹出的对话框中,的成员列表中添加一个AsyncPostBackTriggers成员。 d.指定AsyncPostBackTriggers成员的ControlID和EventName,即引发异步回送的控件的ID和该控件的事件。 完成以上步骤后,切换到HTML页面就会出现下列代码: <asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" /> </Triggers> </asp:UpdatePanel> <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="ButtonOut" /> 这里需要大家注意的是: 把所有的UpdatePanel控件的UpdateMode设为"Conditional",这样才能够针对建有相关触发器的UpdatePanel更新。 一个UpdatePanel上可以建有多个触发器,实现在不同的情况下对该UpdatePanel控件内容的更新。 三、两个UpdatePanel控件,其中一个UpdatePanel内的控件引发两个UpdatePanel控件的同时刷新。 a.在页面上放入两个UpdatePanel和一个ScriptManager控件。 b.在UpdatePanel1中加入一个标签Label1、一个按钮Button1 ,在UpdatePanel2中加入一个标签Label2。 c.将UpdatePanel1和UpdatePanel2两个控件的的UpdateMode属性设为"Always" c.在Button1的Click事件中加入下面的代码: protected void Button1_Click(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToString(); Label2.Text = DateTime.Now.ToString(); } 四、两个UpdatePanel控件,其中一个UpdatePanel内的控件引发当前的UpdatePanel控件的刷新,而另一个不刷新。 a.步骤和上面的(三)一样 b.要把UpdatePanel1和UpdatePanel2两个控件的UpdateMode属性设为Conditional <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="更新两个UpdatePanel" /> </ContentTemplate> </asp:UpdatePanel> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> </ContentTemplate> </asp:UpdatePanel> 五、两个UpdatePanel控件,其中一个UpdatePanel内的控件引发另一个UpdatePanel控件的刷新,而本身不刷新。 a.步骤和上面的(四)一样 b.把UpdatePanel1和UpdatePanel2的ChildrenAsTriggers属性设为false c.在UpdatePanel2控件中加入一个触发器,触发源设到UpdatePanel1控件内的Button1的Click事件上。 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="更新两个UpdatePanel" /> </ContentTemplate> </asp:UpdatePanel> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel> 在开发过程中难免会用到UpdatePanel控件的一些复杂的使用。如:UpdatePanel控件的嵌套、在母版页中使用UpdatePanel、在用户控件中使用UpdatePanel以及在GridView中使用UpdatePanel等。 其实这些操作也免不了对UpdatePanel控件的UpdateMode属性、ChildrenAsTrigger属性以及触发器的使用,下面是系统地说明。 一、两个嵌套的UpdatePanel控件,外部的UpdatePanel内的控件回发引发二者同时更新 在页面上放一个ScriptManager和UpdatePanel控件(UpdatePanel1),在UpdatePanel1中放入一个标签控件 (lblOut)、一个按钮(Button1)和另一个UpdatePanel控件(UpdatePanel2),在UpdatePanel2控件中放一 个标签控件lblIn。 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="lblOut" runat="server"></asp:Label> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click2" Text="Button" /> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="lblIn" runat="server"></asp:Label> </ContentTemplate> </asp:UpdatePanel> </ContentTemplate> </asp:UpdatePanel> 在Button1控件中的Click事件中加入下面的代码: protected void Button1_Click2(object sender, EventArgs e) { lblIn.Text = DateTime.Now.ToString(); lblOut.Text = DateTime.Now.ToString(); } 要实现外部UpdatePanel内控件的回发引起内部和外部两个UpdatePanel控件的同时刷新的话,需要把两个UpdatePanel控件的 UpdateMode都设为Conditional,这样外部UpdatePanel内的控件回发会自动引起内部UpdatePanel控件的刷新。 注意: 外 部UpdatePanel控件的ChildrenAsTrigger属性要设为True,两个UpdatePanel控件的UpdateMode要都设为 Conditional,如果UpdateMode设为Always的话也会出现两个UpdatePanel同时刷新的效果,但样这会导致页面上其它的 UpdatePanel控件也发生刷新。 二、两个嵌套的UpdatePanel控件,内部的UpdatePanel内的控件回发引发二者同时更新 在页面上放一个ScriptManager和UpdatePanel控件(UpdatePanel1),在UpdatePanel1中放入一个标签控件 (lblOut)和另一个UpdatePanel控件(UpdatePanel2),在UpdatePanel2控件中放一个标签控件lblIn和一个按 钮(Button1)。 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="lblOut" runat="server" Width="158px"></asp:Label> <br /> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="lblIn" runat="server" Width="148px"></asp:Label> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click2" Text="Button" /> </ContentTemplate> </asp:UpdatePanel> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel> 在按钮的Click事件中和(一)中的一样。 注意: 把两个UpdatePanel控件的UpdateMode属性设为Conditional,要把内部控件ChildrenAsTrigger设为 True。但这样内部UpdatePanel内的控件只引发自身的刷新,不会引发外部的UpdatePanel控件的刷新,不会刷新外部的 UpdatePanel控件,因此我们还需要为外部UpdatePanel控件加入一个触发器,触发源指定为Button1控件的Click事件上。
wpk_wpk 2013-10-18
  • 打赏
  • 举报
回复
用UpdatePanel控件,楼上写的已经很详细了
Mydal 2013-10-14
  • 打赏
  • 举报
回复
Updatepannel
jerkface 2013-10-14
  • 打赏
  • 举报
回复
引用 1 楼 geek007 的回复:
ajax iframe
求详细一点啊,完全新手。
geek007 2013-10-14
  • 打赏
  • 举报
回复
ajax iframe

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧