彩票走势图

DevExpress的GridControl的实时加载数据解决方案(取代分页)

原创|其它|编辑:郝浩|2011-05-10 14:08:52.000|阅读 6466 次

概述:DevExpress是一套第三方控件,其中有类似DataGridView的控件,今天把针对DevExpress.XtraGrid.GridControl实时加载数据的功能开发出来了,分享给大家希望对大家有帮助。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  DevExpress是一套第三方控件,其中有类似DataGridView的控件,今天把针对DevExpress.XtraGrid.GridControl实时加载数据的功能开发出来了,分享给大家希望对大家有帮助。

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;

namespace Life365.CallCenter
{
public class GridCreator<T> where T: new()
{
//一页有多少条数据
private int page_size = 30;
public int PageSize
{
get { return page_size; }
}
/// <summary>
/// 过滤条件
/// </summary>
public string Filter
{
get;
set;
}
/// <summary>
/// 排序条件
/// </summary>
public string OrderBy
{
get;
set;
}
/// <summary>
/// 数据访问类
/// </summary>
public BaseProxy Proxy
{
get;
set;
}
private int row_count;
/// <summary>
/// 总行数
/// </summary>
public int RowCount
{
get {return row_count;}
}
private int page_num = 1;
/// <summary>
/// 当前的数据页
/// </summary>
public int PageNum
{
get { return page_num; }
}
//缓存的数据
private List<T> data_list = new List<T>();

private GridCreator()

}
/// <summary>
/// 构造函数
/// </summary>
public GridCreator(GridControl grid,BaseProxy proxy)
{
((GridView)grid.MainView).TopRowChanged += 

new EventHandler(grid_TopRowChanged);
this.Proxy = proxy;
grid.DataSource = data_list;
}
/// <summary>
/// 获取前两页数据
/// </summary>
private void GetTwoPageData()
{
data_list.InsertRange(0, GetData());
page_num++;
data_list.InsertRange(page_size, GetData());
}        
/// <summary>
/// grid下拉事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void grid_TopRowChanged(object sender, EventArgs e)
{
GridView grid = sender as GridView;
if (grid.TopRowIndex >= (page_num - 1) * page_size)
{
//当看完一页数据的时候开始取数据
page_num++;
List<T> test = GetData();
data_list.InsertRange((page_num - 1)* page_size, test);
}
}
/// <summary>
/// 实时的加载数据函数
/// </summary>
/// <returns></returns>
public List<T> GetData()
{
return Proxy.GetDataList(this.Filter, this.OrderBy, this.page_size,this.page_num, ref this.row_count) as List<T>;
}

}
}

  T泛型约束是需要加载数据的类型,BaseProxy是访问数据库的基类,其中包含GetDataList的虚方法,继承自BaseProxy的GetDataList为

Code:
         public override object GetDataList(string filter, string order_by,

 int page_size, int page_num, ref int count)
         {
             count = 1000;
             List<RegionEntity> regions = new List<RegionEntity>();
             for (int i = 0; i < page_size; i++)
             {
   regions.Add(new&nbsp;RegionEntity() { SR_RegionName =

 ((page_num-1)*page_size+i).ToString() });
             }
             return regions;
    ;&nbsp;    }

  这里的RegionEntity就是前面提到的某一种类型的T,数据提供程序是模拟出来的,你可以在这个函数里写数据库访问方法。

具体调用方法如下

Code:
GridCreator<RegionEntity> creator&nbsp;= 

new GridCreator<RegionEntity>(gridShop,new UtilsProxy());


(慧都控件网版权所有,转载请注明出处,否则追究法律责任)
标签:DevExpress

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP