首先,我使用主次表来定义表的关系。
次表动态指定数据源
dataSource='<%#((System.Data.DataRowView)Container.DataItem).CreateChildView("tableRelation")%>'>
使用查询语句的是最简单
StringBuilder sb = new StringBuilder("select * from test select * from test2");
使用数据适配器和dataset填充数据集
这样会有2个table
我分别设定2个tablename为"test1","test2"! 父表为test1,子表为test2建立关系
DataRelation tableRelation = new DataRelation("tableRelation",Parent,Child,false);
为dataset的关系集合添加关系对象
datasetds.Relation.add(tableRelation);
而datagrid的时候绑定数据源是 table1.defaultview.
运行正常!
现在我想询问,如何分页?
我先说说我的想法,希望各位高手指点一下,谢谢。
我曾经想过使用sql分页。。
也就是select top来分页。。但是本人的sql语句不擅长,而且也想知道还有其它的分页方法否?
我以前的分页是在填充dataset的时候分别填充不同的table来获取相应需要的数据源。但是这次有2个互相关联的表。
如果使用全部把表都读入dataset然后每次分页再全部读一次表,这样会造成系统资源内存不够。
因为数据可能有10-100万条而且同时操作的人。。最高可能会有将近100人。。
这个方法肯定会造成服务器瘫痪的!
但是我就不知道还有什么方法能尽量占用少系统资源的状况下分页呢??
希望各位高手指教!
谢谢
如果分数不够,还可再加!

解决方案 »

  1.   

    如果填充到DataSet可以用PagedDataSource pds;
    pds.PageSize=?
    pds.CurrentPageIndex=?
    然后设置DataList的DataSource=pds;
      

  2.   

    lmlive() 
    这样不行!
    而且这样就是跟我说的把2个表都放入了dataset,而且每次点击下一页都要再全部读一次表
    这样根本服务器内存无法支撑,要知道这2个表的数据非常大,1个表至少可能就有10万条。
    2个表那很难支撑下去
    请问没有其他方法了吗?
    请高手多多指教
    谢谢!
    不胜感激!
      

  3.   

    不知道楼主有没有用过陕北吴旗娃的分页控件?Http://www.webdiyer.com
      

  4.   

    难道除了使用其他的分页控件的方法
    就不能使用DataGrid自带的方法解决吗?
    郁闷
    不过先谢谢
     renyu732(Good Good Study,Day Day Up.) 
    陕北吴旗娃是我佩服的一个牛人!!
    嗬嗬,向他学习。不过我还是想询问靠datagrid的关系绑定没有理由不行!
    只是没有人带入门,难道没有高手指点一下吗?
    谢谢!
      

  5.   

    数据量大时,PagedDataSource确实不行
    但是可以读出数据记录数除以页数,取得大概ID,但不是很准确(可能删除了一些数据)