你可以用SQL语句生动生成一个rownum的字段啊。保存所有记录的编号。 或者用一下变通的方法,在填充DataSet时只填充查询的前10条记录。 DataSet ds = new DataSet(); SqlDataAdapter myCmd = new SqlDataAdapter("查询语句",数据库连接对象); myCmd.Fill(ds,0,10,"TableName"); 这样就只填充前10条记录到DataSet。 0是从第1条记录开始,10是返回的记录数。
要不用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做处理 }
上面for写错了个符号 不好意思
你可以用SQL语句自动生成一个rownum的字段。 代码如下: select rownum=(select sum(1) from TableName where 表中唯一不会重复的字段名<=A.表中唯一不会重复的字段名),* from TableName A
DataView dv = ds.Table[0].DefaultView;
dv.RowFilter = "[rownum]<10";
DataGrid1.DataSource = dv;
未找到列 [rownum]。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.EvaluateException: 未找到列 [rownum]。 找不到rownum关键字呀
按照dv.RowFilter = "[rownum]<10";的写法,好象是选的这一列里值小与10的数据,
我是要拿前10行数据,好象不是我想要的
或者用一下变通的方法,在填充DataSet时只填充查询的前10条记录。
DataSet ds = new DataSet();
SqlDataAdapter myCmd = new SqlDataAdapter("查询语句",数据库连接对象);
myCmd.Fill(ds,0,10,"TableName");
这样就只填充前10条记录到DataSet。
0是从第1条记录开始,10是返回的记录数。
再用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做处理
}
不好意思
代码如下:
select rownum=(select sum(1) from TableName where 表中唯一不会重复的字段名<=A.表中唯一不会重复的字段名),*
from TableName A
pgy8288和我的想法差不多了,那怎么有把得到的DataRow dr绑定到一个datagrid呢?
Adapter.Fill(dataset,0,10,"table");
//Adapter.Fill(dataset,起始行,起始行往下多少行,"表名");
DbGrid.DataSource=dataset;
DbGrid.DataBind();
我查询就直接返回的是一个Dataset呀,里面有数据了,
我要的是去返回的Dataset拿前10行数据
大概也就是利用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);
}
} }
}