用ajax使网页不刷新就可以显示新数据

80酷酷网    80kuku.com

  ajax|数据|刷新|网页|显示

用AjaxPro的:
1. 在引用中添加引用AjaxPro.dll,我用的是这个,支持asp.net 1.1 和asp.net 2.0。

2. web.config中建立HttpHandler

3..新建一个类Demo,这个类里面提供了查询数据库和输出列表的方法。获得服务器控件运行后生成的html,然后返回客户端。

Demo.cs

---------------------------------------------

using System;
using System.Data;
using AjaxPro;
using System.Web.UI.WebControls;

namespace AJAXDemo
{
 public class Demo
 {
  public Demo()
  {
  }

   [AjaxMethod]
  public DataSet GetSqlServerTable()
  {
   DataSet ds = new DataSet();
   System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("user id=sa;data source=SERVER;initial catalog=zhsj");
   System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter("SELECT id FROM 发货单", conn);

   try
   {
    conn.Open();
  
    try
    {
     da.Fill(ds);
    }
    finally
    {
     conn.Close();
     conn.Dispose();
    }
   }
   catch(Exception)
   {
   }

   return ds;
  }

  [AjaxMethod]
  public string GetAjaxTable()
  { 
   DataSet ds = new DataSet();
   System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("user id=sa;data source=SERVER;initial catalog=zhsj");
   System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter("SELECT top 8 * from 规格对应表",conn);

   try
   {
    conn.Open();
  
    try
    {
     da.Fill(ds);
    }
    finally
    {
     conn.Close();
     conn.Dispose();
    }
   }
   catch(Exception)
   {
   }

      
   DataGrid dg=new DataGrid();
   dg.DataSource=ds;
   dg.DataBind();

   //实例化一个HtmlTextWriter的类
   System.Text.StringBuilder sb=new System.Text.StringBuilder();
   System.IO.StringWriter sw=new System.IO.StringWriter(sb);
   System.Web.UI.HtmlTextWriter htw=new System.Web.UI.HtmlTextWriter(sw);
 
   //设置DataGrid的样式

   htw.AddAttribute("BorderWidth","1px",true);
   htw.AddAttribute("BackColor","White",true);
   htw.AddAttribute("CellPadding","4",true);
   htw.AddAttribute("CellSpacing","2",true);
   htw.AddAttribute("ForeColor","#330099",true);


   dg.RenderControl(htw);
   string s=sb.ToString();

   return s;
  }

 }
}


4.建一个default.aspx,在pageload事件里面注册

 private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   AjaxPro.Utility.RegisterTypeForAjax(typeof(AJAXDemo.Demo));
  }

5.编default.aspx的页面代码,主要部分是脚本

<script language="javascript" defer>
function doTest(){
AJAXDemo.Demo.GetSqlServerTable(_callback);
}

function _callback(res){
var cols = res.value.Tables[0].Columns.length;
var rows = res.value.Tables[0].Rows.length;
alert(cols + " cols and " + rows + " rows");
}

function loadGrid(){
AJAXDemo.Demo.GetAjaxTable(_callback2);
}

function _callback2(res){
document.getElementById("UCtd").innerHTML=res.value;
}

</script>  

window.setTimeout(XXXXX, 1000);
每1秒刷新

利用自动无刷新技术:
function xmlHttp(url){
var xmlccj= new ActiveXObject("Microsoft.XMLHttp")
xmlccj.open("post",url,false);
xmlccj.send();
var xmlHttps=bytes2BSTR(xmlccj.responseBody);
return xmlHttps;
}
使用方法:(参数url:提取数据的页)
需要两页文件,1、显示数据的页;2、提取数据的页
在显示数据的那页利用此函数就可把要提取的数据实现自己无刷新更新了
不过要处理中文问题,我这里就不说了,你可以查查相关资料。



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: