DataAccess层就行,下面的代码应该能给你点提示:public DataSetVendor GetVendorByQuery(string query,int start,int pageSize)
{
DataSetVendor dsVendor = new DataSetVendor();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand  = this.sqlConnection.CreateCommand();
if(query == "")
{
da.SelectCommand.CommandText = String.Format("SELECT * FROM Vendor" );
    da.Fill(dsVendor,start,pageSize,"Vendor");
}
else
{
da.SelectCommand.CommandText = String.Format("SELECT * FROM Vendor WHERE {0}",query);
da.Fill(dsVendor,start,pageSize,"Vendor");
// da.SelectCommand.Connection = this.sqlConnection;
}

return dsVendor;

解决方案 »

  1.   

    to qingchunjingwu(qingchunjingwu) :
      用adapter这样fill一定的pageSize到DataSet,对于SqlServer来说,是先做了全查询再装入结果集中的指定部分,还是真的只输出了那一部分的查询结果啊?如果试“全查询输出”在表记录很多的情况下sql server会很慢。所以我想找个好办法出来。
      

  2.   

    答:是先做了全查询再装入结果集中的指定部分。比如1-16个结果,这种操作是fill()方法的一个重载,速度上还可以。你说的“纯的”分页输出,可以实现,其实很简单使用ViewState,数据层使用view,SQL语句里>0 and <16等保证每次只输出16个记录,都可以实现,但要求数据库联系紧密,在.net下与数据库的连接操作都是耗资源的行为(打开要30K左右),所以多次打开、关闭数据库都不是一个好的选择。你要记住鱼和熊掌不可兼得。
      

  3.   

    to zzcwhq(zzcwhq) 
      方法一性能太差,不可取。
      方法二关键是做出来的逻辑分层不清晰。
    我的问题就是“怎样保证性能又能分层清晰”,不是“怎么做分页”。
      

  4.   

    to qingchunjingwu(qingchunjingwu) 
       做分页的方式有很多,viewState和view也是一种办法。我比较想能听听大家有没有更好的办法。保证逻辑分层清晰,同时保证性能没有太大损失。
      有请各位大侠,集思广益。
      

  5.   

    http://blog.csdn.net/bineon/archive/2004/07/09/38215.aspx
    ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkwalkthroughdisplayingdatainlistboxesonwebformspage.htm
    上面是针对web的分页机制。但是思路确实很不错的。效率也没有话说。http://blog.csdn.net/bineon/articles/38701.aspx
    实现千万级数据的分页显示! 
    看看。
      

  6.   

    DataAccess层
    或者
    放在数据库层,用存储过程实现比放在ui层好
      

  7.   

    为了使控件做到通用,应该放在业务逻辑层中,并且返回一个string pSql  ,然后将这个字符串传入你的自定义控件中;当然你的自定义控件应该包含一些必须的属性,如:控件样式,每页显示的行数等;
    另外性能方面建议使用DataReader,速度上会快很多(大数据的时候),读的时候在里面加一个记数器,把将要显示的数据存在一个DataTable中进行绑定! 如: CurrentPageIndex*(每页行数) = 30
    则,当记数器读到31的时候开始取数据,并存在DataTable中,直到取完一页的数据;
    不知道你明白没?
      

  8.   

    业务逻辑层
             |
             |(向下传递Sql语句)
     --------------------
             |
          分页控件
             |
      -------------------
             |(向上传递要显示的页码)
             UI