怎么样取DataSet前多少行记录(如前10行)绑定到DataGrid,
   我这样写不可以,
   DataGrid1.DataSource=ds.Tables[0].Select("rownum<10");
    怎么样取才对?

解决方案 »

  1.   

    绑定到DataGrid,设定每页10行,翻到第一页不就可以了吗???
      

  2.   

    DataGrid1.DataSource=ds.Tables[0].Select("rownum<10");这是不行的,.net可不知道rownum是什么如果你在读取数据的时候把rownum也作为一列读取出来,那就可以,写法
    DataView dv = ds.Table[0].DefaultView;
    dv.RowFilter = "[rownum]<10";
    DataGrid1.DataSource = dv;
      

  3.   


     未找到列 [rownum]。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.EvaluateException: 未找到列 [rownum]。 找不到rownum关键字呀
      

  4.   

    我知道那里错了,我的表里没有rownum列,
    按照dv.RowFilter = "[rownum]<10";的写法,好象是选的这一列里值小与10的数据,
    我是要拿前10行数据,好象不是我想要的
      

  5.   

    楼上都说了,假设rownum是一个字段,保存着记录编号。
      

  6.   

    你可以用SQL语句生动生成一个rownum的字段啊。保存所有记录的编号。
    或者用一下变通的方法,在填充DataSet时只填充查询的前10条记录。
    DataSet ds = new DataSet();
    SqlDataAdapter myCmd = new SqlDataAdapter("查询语句",数据库连接对象);
    myCmd.Fill(ds,0,10,"TableName");
    这样就只填充前10条记录到DataSet。
    0是从第1条记录开始,10是返回的记录数。
      

  7.   

    要不用DataSet.Tables[0].Rows.Count统计有多少行
    再用for循环单独取出Rows[i]:
    int n = ds.Tables[0].Rows.Count;
    DataRow dr;
    for (int i = 0; i < n, ++i)
    {
        dr = ds.Tables[0].Rows[i];
        …………
        //对dr做处理
    }
      

  8.   

    上面for写错了个符号
    不好意思
      

  9.   

    你可以用SQL语句自动生成一个rownum的字段。
    代码如下:
    select rownum=(select sum(1) from TableName where 表中唯一不会重复的字段名<=A.表中唯一不会重复的字段名),*
    from TableName A
      

  10.   


    pgy8288和我的想法差不多了,那怎么有把得到的DataRow dr绑定到一个datagrid呢?
      

  11.   

    可以把查询结果的前10行加入DATASET
    Adapter.Fill(dataset,0,10,"table");
    //Adapter.Fill(dataset,起始行,起始行往下多少行,"表名");
    DbGrid.DataSource=dataset;
    DbGrid.DataBind();
      

  12.   


       我查询就直接返回的是一个Dataset呀,里面有数据了,
    我要的是去返回的Dataset拿前10行数据
      

  13.   

    发一段我做过的..没整理...楼主自己改吧
    大概也就是利用rows.count来定位...然后把这些结果全部复制到一个DataTable 上
    public void bindlist(string tablename,int PageNo)
    {
    DataTable tempTable = m_ds.Tables[tablename];
    m_cloneTable = tempTable.Clone();

    //
    if(m_totalrecord < m_pagesize)
    {
    for(int i = 0; i < m_totalrecord; i++)
    {
    if(i > tempTable.Rows.Count)
    {
    break;
    } DataRow newrow = m_cloneTable.NewRow(); for(int j = 0; j < tempTable.Columns.Count; j++)
    {
    newrow[tempTable.Columns[j].ColumnName] = tempTable.Rows[i][j];
    } m_cloneTable.Rows.Add(newrow);
    }
    }
    else
    {
    if( PageNo * m_pagesize > m_totalrecord)
    {
    int rows = m_totalrecord % m_pagesize;

    for(int i = (PageNo-1) * m_pagesize; i < (PageNo-1) * m_pagesize + rows; i++)
    {
    if(i > tempTable.Rows.Count)
    {
    break;
    } DataRow newrow = m_cloneTable.NewRow(); for(int j = 0; j < tempTable.Columns.Count; j++)
    {
    newrow[tempTable.Columns[j].ColumnName] = tempTable.Rows[i][j];
    } m_cloneTable.Rows.Add(newrow);
    } }
    else
    {
    for(int i = (PageNo-1) * m_pagesize; i < PageNo * m_pagesize; i++)
    {
    if(i > tempTable.Rows.Count)
    {
    break;
    } DataRow newrow = m_cloneTable.NewRow(); for(int j = 0; j < tempTable.Columns.Count; j++)
    {
    newrow[tempTable.Columns[j].ColumnName] = tempTable.Rows[i][j];
    } m_cloneTable.Rows.Add(newrow);
    }
    } }
    }
      

  14.   

    补充:然后在DataGrid.DataSource= m_cloneTable