日期:2014-05-17  浏览次数:20390 次

新手求助,求高手来看一看
由于最近领导要求,才接触asp.net 于是用VS2010新建了一个C#的asp.net网站 ,基本是Web.config、Site.master、Defalut.aspx这些文件,每次运行也是从Site.master进入 

由于要实现局部数据的无闪刷新,瞬间就把我这个新手难住了。看了好多网上的例子

现在Defalut.aspx代码是这种情况,目地是对Ua自动刷新,其他的文件都是默认的未修改
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">  
  <asp:Button ID="Button1" runat="server" 
  style="top: 485px; left: 670px; position: absolute; height: 26px; width: 56px" 
  Text="Button" onclick="Timer1_Tick" />
   
  <asp:ScriptManager ID="ScriptManager1" runat="server">
  </asp:ScriptManager>
  <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
  <ContentTemplate>
  <asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick">
  </asp:Timer>
  <asp:Label ID="Ua" runat="server" Text="Ua"
  style="top: 570px; left: 723px; position: absolute; width: 31px"></asp:Label>
  </ContentTemplate>
  </asp:UpdatePanel>
</asp:Content>

cs文件Timer1_Tick方法是查询数据库并赋值 this.Ua.Text = “”;

结果是不会自动刷新,Timer就根本不触发Timer1_Tick的事件,但是点了Button按钮是可以触发的

现在主要是以下疑惑:1.是不是因为新建的项目是WebForm就不可以使用Timer了,为什么Timer不触发呢?
  2.点击按钮有时候会出现闪屏,如何解决呢?
  3.看见网上有些是JS实现的,但是我看见好多都是用到JSp,可是asp。net里面都是aspx文件啊?
  4.如果哪位大大有能解决这个问题的事例,还请给小的看看,好人一生平安啊~~


------解决方案--------------------
Button要放到UpdatePanel里面 ,另外你要的功能这是点击按钮 然后从数据库中去取出数据 并无刷新的呈现出来,这里貌似不用Timer把
页面
HTML code
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Label runat="server" ID="lblResult"></asp:Label>
            <asp:Button runat="server" ID="btnTest" Text="测试" />
        </ContentTemplate>
    </asp:UpdatePanel>

------解决方案--------------------
最好不要在依赖服务器控件这种吧,试试直接用html+AJAX的那种很容易就达到你的效果
示例代码如下
AjaxRefresh.aspx
HTML code

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    AjaxRefresh
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>
        AjaxRefresh</h2>
    <div id="currentTime">
    </div>
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
           //每秒定时调用后台刷新数据
            var date = new Date();
            var mytime = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + 
            date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
            $("#currentTime").html(mytime);
            window.setInterval(AjaxRefreshContent, 1000);
        })
        
        //定时异步刷新数据库任务
        var AjaxRefreshContent = function () {
            $.ajax({