参见:http://msdn.microsoft.com/zh-cn/library/bb398865(v=vs.100).aspx 中的在 UpdatePanel 控件外部使用 Timer 控件部分。

解决方案 »

  1.   

    第一次看到在web上用timer控件是要定时刷新数据吗?你可以用js定义一个timer,然后用ajax去取数据
      

  2.   

    不行啊,我设置 Timer1.Enabled = true;了,但是click时间里面就是不执行啊
      

  3.   

    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            书名:<asp:TextBox ID="txtTitle" runat="server"></asp:TextBox>
            <asp:Button ID="btnSearch" runat="server" Text="搜索" onclick="btnSearch_Click" />
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                        <Columns>
                            <asp:BoundField DataField="id" HeaderText="编号" />
                        </Columns>
                        <Columns>
                            <asp:BoundField DataField="title" HeaderText="书名" />
                        </Columns>
                    </asp:GridView>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
                </Triggers>
            </asp:UpdatePanel>
            <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">
            </asp:Timer>
        </div>
        </form>
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Timer1.Enabled = true;
                bind();
            }
        }    private void bind()
        {
            string sql = "select * from books where 1=1";
            if (txtTitle.Text.Trim().Length > 0)
            {
                sql += " and title like '%"+txtTitle.Text+"%'";
            }
            GridView1.DataSource = DbHelperSQL.Query(sql).Tables[0];
            GridView1.DataBind();
        }
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            bind();
        }
        protected void btnSearch_Click(object sender, EventArgs e)
        {
            bind();
        }
    第一个问题是Timer1_Tick不执行
    第二个问题是UpdatePanel 没有局部刷新
      

  4.   

    不行啊,我设置 Timer1.Enabled = true;了,但是click时间里面就是不执行啊
    把 判断是否回传给去掉呢
      

  5.   

    我是很久没用过.net了,所以在重新学习,发现真的好多都忘了,我这代码是参考书上写的啊,这么简单的怎么就是不对呢
      

  6.   

    不行啊,我设置 Timer1.Enabled = true;了,但是click时间里面就是不执行啊
    把 判断是否回传给去掉呢
    试过了,把if (!IsPostBack)去掉还是一样的
      

  7.   

    在asp:ScriptManager里加上EnablePartialRendering="False" 试试
      

  8.   

    http://bbs.csdn.net/topics/340029841
    这个帖子跟你的问题是不是类似?
      

  9.   


    我用的是这里的控件,拖进页面之后,会自动添加一段代码
    <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        Namespace="System.Web.UI" TagPrefix="asp" %>
      

  10.   

    Ajax扩展控件我装的1.0版本啊,应该不是版本问题吧
      

  11.   

    Timer控件使用UpdatePanel控件局部更新示例
    //控件使用页面设置
     <form id="form1" runat="server">
        <table class="style1">
            <tr>
                <td>
                    <asp:Image ID="Image1" runat="server" ImageUrl="~/top-01.jpg" />
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ScriptManager ID="ScriptManager1" runat="server">
                    </asp:ScriptManager>
                </td>
            </tr>
        </table>
        <div>
        
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Timer ID="Timer1" runat="server" Interval="3000" ontick="Timer1_Tick">
                    </asp:Timer>
                    在线考试题:宋朝是公元多少年
                    <br />
                    <asp:Label ID="lbTime" runat="server"></asp:Label>
                </ContentTemplate>//codego.net/tags/11/1/
            </asp:UpdatePanel>
        
        </div>
        </form>
    //页面时间控制程序
        private int index// 并设置读写属性
        {
            get
            {
                object o = ViewState["index "];
                return (o == null) ? 600 : (int)o;
            }
            set
            {
                ViewState["index "] = value;
            }
        }
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            this.index--;
            if (this.index == 0) //考试时间到了
            {
                this.Timer1.Enabled = false;//设置Timer控件不可见
                //时间到时,此处可编写自动提交试卷的方法
            }
            else
            {
                //显示考试剩余时间
                this.lbTime.Text = this.index / 60 + "分" + this.index % 60 + "秒将停止考试,请及时“提交”试卷,否则试卷作费成绩无效!";
            } 
        }