主页面Default设计代码如下:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    Namespace="System.Web.UI" TagPrefix="asp" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:Label ID="timeLabel" runat="server" Text="Label"></asp:Label><br />
        <br />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>&nbsp;
                <br />
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
        &nbsp;
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
    </form>
</body>
</html>服务器端的代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page 
{
    int clickTimes;    protected void Page_Load(object sender, EventArgs e)
    {
        timeLabel.Text = DateTime.Now.ToString();
        clickTimes = 0;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        clickTimes += 1;
        Label1.Text = "点击的次数为:" + Convert.ToString(clickTimes);
    }
}当我点击按钮时,为什么不能只刷新UpdatePanel内的内容,而是全页面刷新?

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e) 
        { 
            if(!ispostback){
            timeLabel.Text = DateTime.Now.ToString(); 
            clickTimes = 0; 
    }
        } 
      

  2.   

    http://topic.csdn.net/u/20090808/16/ee2ad200-2c88-4374-b4c3-e30242e4fc92.html
      

  3.   


    同时设置BUTTON的 click服务端事件
      

  4.   

    指定了AsyncPostBackTrigger,所以这里不是把Button放进UpdatePanel里的问题.而且他有个逻辑搞错了,  
    protected void Button1_Click(object sender, EventArgs e) 

            clickTimes += 1; 这不是winform, clickTimes在你每次PostBack,不管是不是异步的,都会重新初始化.
      

  5.   

    我在vs05的Ajax enabled WebSite里拷贝了楼主的代码, 没问题.只需要把服务器端代码改成如下就行了:protected void Page_Load(object sender, EventArgs e)
    {
        timeLabel.Text = DateTime.Now.ToString();
        if (!IsPostBack)
                ViewState["clickTimes"] = 0;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        int clickTimes = Convert.ToInt32(ViewState["clickTimes"]);
        clickTimes++;
        ViewState["clickTimes"] = clickTimes;
        Label1.Text = string.Format("点击的次数为:{0}", clickTimes);

      

  6.   

    05和08的ajax有很多不同的!05用起来就有点麻烦
      

  7.   

    我用的是VS2005,namhyuk的代码我试了下,确实可以显示点击的次数,但每次点击时,页面还是全部被刷新,而不是局部刷新。我的目的是想将用户点击的次数保存在clickTimes内,并且实现Label1局部刷新,怎么做呢?
      

  8.   

    其实这是不可能发生的不是吗? 确实让人感觉莫名其妙.<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /><asp:UpdatePanel UpdateMode="Conditional"加上这些黑体部分试试? 反正我是没碰到过UpdatePanel不起作用的情况. 难道是IE禁用了JavaScript? 也不像...