startRecord,maxRecords得到了   得不到记录数的?
要不在SQL里  增加字段 select ..... count(字段) as icount ....

解决方案 »

  1.   

    下面的示例使用派生类 OleDbDataAdapter,利用 categories 表中从第 10 行开始的 15 行数据来填充 DataSet。此示例假定您已经创建了一个 OleDbDataAdapter 和一个 DataSet。
     注意   此示例显示如何使用 Fill 的一个重载版本。有关其他可用示例,请参阅单独的重载主题。public void GetMyRecords() {
       // ...
       // create myDataSet and myDataAdapter
       // ...
       myDataAdapter.Fill(myDataSet,9,15,"Categories");
    }
      

  2.   

    呵呵,我用的Sql语句是根据一定条件动态产生的,我只需调用一个接口就可以得到,你说的倒是一个方法,不过在我这里不是很容易用,谢谢。也许你还不明白这个Fill重载的意义,startRecord,maxRecords是自己定义的
      

  3.   

    你查看dataset里面的记录条数就晓得了三!
      

  4.   

    int aa=SqlDataAdapter的Fill(dataSet,startRecord,maxRecords,tableName);
    不过提醒你一下,你这么在性能上没有任何意义,比如数据库里有100条记录,你只取1-10条,按照你的写法SqlDataAdapter是先全部取出100条记录,然后删除11-100条记录.
      

  5.   

    To:gshope(北京.Net)
    这样的方式都显得不怎么好,有没有更简单有效的方式,这样的话要在数据层处理的多一点,
    并且有一个疑问,如果去得是第n页,前(n-1)+pageSize的被Remove掉以后row[0]指向的是那一行?总不是一个妥当的方法
    To:Jinniu(金牛), bitsbird(一瓢.net):
    您没有明白我的意思,请仔细看看我想做什么,谢谢
      

  6.   

    row[0]是第n页的第一行.
    建议你还是分两次吧,一次是在sql里运行count(*),用SqlDataReader取值,效率应该不错的.
      

  7.   

    SqlConnection cn = new SqlConnection("server=localhost;uid=sa;pwd=sa;database=pubs");
    SqlDataAdapter ad = new SqlDataAdapter( _
    "select * from authors;select count(*) from authors;",cn); 
    //请注意这一句!取得的结果集将生成两个表
    //前面的SQL语句是第一个表的内容
    //后面的SQL语句是第二个表的内容,即总记录数
    DataSet rs = new DataSet();
    string tablename = "authors";ad.Fill(rs,0,19,tablename); //这里是按你的意思取得结果集
    this.textBox1.Text = rs.Tables[1].Rows[0][0].ToString();  
    //这里的Tables[1]的首个内容就是你要的总的查询结果个数。....
    //然后把rs.Tables[0]的内容绑定到你需要的控件上就行记得给分哦!