此外,值得一提的是,可将数据源的数据读取出来的总数据DataSet形成一个缓存,当服务器端收到客户端发来的数据请求后,只须从缓存中提取出需要的数据即可,从而避免了对数据源的频繁的访问,提高了服务器的效率。服务器端的框架结构图(如图3),代码示例如下:
图3 服务器端框架示意图
服务器端代码示例:
public partial class WebForm : System.Web.UI.Page
{
public static DataSet ds = new DataSet();//设置全局变量作为数据缓存
protected void Page_Load(object sender, System.EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm));//初始化Ajax引擎
SetData();//构建数据缓存的函数
}
public void SetData()
{
//建立ptable用于存放缓存数据
DataTable ptable = new DataTable("meatx");
…. //从数据源获取数据添加到ptable
//建立otable用于存放缓存数据(列信息)
DataTable otable = new DataTable("meat");
otable.Columns.Add("COLNAME",typeof(string));
…//从数据源获取数据表信息(列信息等)添加到otable
ds.Tables.Add(ptable); ds.Tables.Add(otable);//将Table加入ds形成数据缓存
}
//从缓存中获取表信息
[AjaxPro.AjaxMethod]//标志Ajax函数
//perpage表示控件每页显示数据个数 pagecount表示要显示的页码 disptype为显示方式
public DataSet GetAllData(int perpage,int pagecount,int disptype)
{
DataSet newds = new DataSet();//建立返回客户端的数据集
DataTable t1 = new DataTable("t1");
DataTable t2 = ds.Tables[1].Copy();
newds.Tables.Add(t1); newds.Tables.Add(t2);//将Table加入ds形成数据缓存
//根据客户端请求计算出应该从缓存中提取的数据获取相应的数据
if(perpage>=(ds.Tables[0].Rows.Count))//每页显示个数大于全部数据个数,直接返回整个数据集
{
|