ASP.NET+Ajax+Javascript实现页面div定时刷新

一、概述

  考虑Html本身不带定时刷新页面的控件,且不考虑使用第三方控件;因此考虑使用Javascript中的setTimeout+xmlhttp来实现定时更新页面中部分内容,此实现在IE6.0及以上版本测试通过,其他浏览器暂时未测试过。

 

二、功能及特点

  1、Javascript通过Microsoft的MSXML对象,动态获取后台数据库数据;

  2、Javascript解析MSXML对象中的xml内容,整理为html后,显示给用户;

  3、Javascript实现分页功能;

  4、通过配置文件Config.xml中的参数,可以修改div的刷新频率、每页显示记录条数等。

 

三、前台Html

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmBayonetShow.aspx.cs" Inherits="DynamicShow_FrmBayonetShow" %>



    页面动态更新


   


      
           
               
           
           
               
           
           
               
           
       

                    页面动态更新示例
               

                   

                   

               

                   

                   

               

       
   




四、Config.xml配置文件


 
   
    10
   
    12
 

 

五、Javascript实现

 //MSXML对象根节点
var oRoot;
//setTimeout对应ID
var time;
//刷新时间间隔
var reflashInterval=10;
//每页显示记录条数
var pageSize = 20;

/***************分页功能Javascript***************/
Pagination=function(controlId)
{
    //总记录条数
    var totalNum=0;
    //每页记录条数
    var maxNum=10;
    //
    var pageUrl="";
    var breakpage = 5;
    var currentposition = 0;
    var breakspace = 2;
    var maxspace = 4;
    //当前页
    var currentpage=1;
    var perpage=10;
    var id =controlId;

    //分页初始化
    this.initPage = function(pageName)
    {
        var count = this.getTotalNum();
        perpage = this.getMaxNum();
        if (currentpage==null)
        {
            currentpage = 1;
        }
        else
        {
            currentpage = parseInt(currentpage);
        }

    var pagecount = Math.floor(count/perpage)+(count%perpage == 0 ? 0:1);

    var pagestr = "";
    var prevnum = currentpage-currentposition;
    var nextnum = currentpage+currentposition;
    if(prevnum<1)
        prevnum = 1;

    if(nextnum>pagecount)
        nextnum = pagecount;

    pagestr += (currentpage==1)?' <上一页':'<上一页';
    if(prevnum-breakspace>maxspace)
    {
        for(i=1;i<=breakspace;i++)
            pagestr += ''+i+'';
        pagestr += '...';
        for(i=pagecount-breakpage+1;i            pagestr += ''+i+'';
   }
   else
   {
        for(i=1;i            pagestr += ''+i+'';
   }
   for(i=prevnum;i<=nextnum;i++)
   {
        pagestr += (currentpage==i)?''+i+'':''+i+'';
   }
  
   if(pagecount-breakspace-nextnum+1>maxspace)
   {
        for(i=nextnum+1;i<=breakpage;i++)
            pagestr += ''+i+'';
           
        pagestr += '...';
       
        for(i=pagecount-breakspace+1;i<=pagecount;i++)
            pagestr += ''+i+'';
   }
   else
   {
        for(i=nextnum+1;i<=pagecount;i++)
            pagestr += ''+i+'';
   }
   pagestr += (currentpage==pagecount)?'下一页  >':'下一页  >';
 
      this.$(id).className="manu"
      this.$(id).innerHTML=pagestr;
    }
   

    //获取记录总条数
    this.getTotalNum = function()
    {
        return totalNum;
    };


    //设置记录总条数
    this.setTotalNum = function(sTotalNum)
    {
        totalNum = sTotalNum;
    };

    //获取页数

    this.getMaxNum = function()
    {
        return maxNum;
    };


    //设置页数
    this.setMaxNum=function(sMaxNum)
    {
        maxNum = sMaxNum;
    };


    //设置当前页
    this.getIndexPage = function()
    {
        return currentpage;
    };
   

    this.setIndexPage=function(sCurrentPage)
    {
        currentpage =sCurrentPage;
    };
   
    this.page_οnclick=function(num,pageStr)
    {
        this.setIndexPage(num);
        pagination_data();
        this.initPage(pageStr);
    };
   
    this.$=function(objStr)
    {
        return document.getElementById(objStr);
    }
}

function $(objStr)
{
    return document.getElementById(objStr);
}

/***************页面参数初始化函数***************/
function InitMarqueeParameter()
{
    try
    {
        var xmlDoc;
        if(window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async = false;
            xmlDoc.load("Config.xml");
        }
           
        if(xmlDoc==null)
        {
            return;
            //alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
        }
       
        var node;
        //div刷新频率
        node = xmlDoc.getElementsByTagName("marquee/marquee_bayonetBond/ReflashInterval");
        reflashInterval = parseInt(node[0].text);
        if(reflashInterval < 10)
            reflashInterval=10;
        //每页显示记录条数
        node = xmlDoc.getElementsByTagName("marquee/marquee_bayonetBond/PageSize");
        pageSize = parseInt(node[0].text);
    }
    catch(e)
    {
    }
}

/***************获取后台数据,生成当前显示页内容***************/
function GenerateContent()
{
    var oXMLDoc = new ActiveXObject('MSXML');
    oXMLDoc.url = "HandlerGetScrolContent.ashx?MarqueeType=marquee_bayonet2";
    oRoot=oXMLDoc.Root;
   
    if(oRoot.children == null)
    {
        //清除当前定时器
        clearTimeout(time);
        //定义定时器
        time=setTimeout("GenerateContent()",1000*reflashInterval); 
        return;
    }    
   
    page.setTotalNum(oRoot.children.length);  //设置总记录条数
    page.setMaxNum(pageSize);                 //每页显示的条数
    page.setIndexPage(1);                     //当前所在第几页
    page.initPage("page");                    //初始化页面
    pagination_data();                        //生成当前显示页内容
}

/***************生成当前显示页内容***************/
function pagination_data()
{
    //清除当前定时器
    clearTimeout(time);
    //重新定义定时器
    time=setTimeout("GenerateContent()",1000*reflashInterval); 
    if(oRoot.children == null)
        return;
   
    //当前页
    var pIndex = page.getIndexPage();
    //总页数
    var pNum = page.getMaxNum();
   
    //计算需显示内容的开始位置
    var beginIndex = (pIndex - 1)*pNum;
    //计算需显示内容的结束位置
    var endIndex = (beginIndex + pNum) > oRoot.children.length ? oRoot.children.length : (beginIndex + pNum) ;
   
    var tablecontent="";
    //配置具体滚动内容
    tablecontent += "

";
    for(var i=beginIndex;i    {
        var row=oRoot.children.item(i);
        tablecontent += "
";
       
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
        tablecontent +="";
       
        tablecontent +="";

        tablecontent +="

";
    }
    tablecontent += "
" + IsNull(row.GetAttribute("CHNL_NAME")) + "" + IsNull(row.GetAttribute("I_E_NAME")) + "" + IsNull(row.GetAttribute("IC_CARD")) + "" + IsNull(row.GetAttribute("DL_CAR_NO")) + "" + IsNull(row.GetAttribute("CJ_CAR_NO")) + "" + IsNull(row.GetAttribute("DL_WT")) + "" + IsNull(row.GetAttribute("CJ_WT")) + "" + IsNull(row.GetAttribute("DL_CONTA_NO")) + "" + IsNull(row.GetAttribute("CJ_CONTA_NO")) + "" + IsNull(row.GetAttribute("TIMEOUT")) + "" + IsNull(row.GetAttribute("I_E_DATE")) + "" + IsNull(row.GetAttribute("PASS_MARK") + "
";
   
    divMarquee.innerHTML=tablecontent;
}

/***************空值替换函数***************/
function IsNull(oldstring)
{
    if(oldstring == "")
        return " "
    else
        return oldstring;
}

 

六、样式表

 略。

 

七、后台数据获取

 略。

你可能感兴趣的:(ASP.NET,JavaScript)