100分求DataSet的问题?

isd 2006-02-23 09:22:08


怎么样取DataSet前多少行记录(如前10行)绑定到DataGrid,
我这样写不可以,
DataGrid1.DataSource=ds.Tables[0].Select("rownum<10");
怎么样取才对?
...全文
266 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
GrassJing526 2006-02-24
  • 打赏
  • 举报
回复
补充:然后在DataGrid.DataSource= m_cloneTable
GrassJing526 2006-02-24
  • 打赏
  • 举报
回复
发一段我做过的..没整理...楼主自己改吧
大概也就是利用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);
}
}

}


}
isd 2006-02-23
  • 打赏
  • 举报
回复

我查询就直接返回的是一个Dataset呀,里面有数据了,
我要的是去返回的Dataset拿前10行数据
kisssuner 2006-02-23
  • 打赏
  • 举报
回复
可以把查询结果的前10行加入DATASET
Adapter.Fill(dataset,0,10,"table");
//Adapter.Fill(dataset,起始行,起始行往下多少行,"表名");
DbGrid.DataSource=dataset;
DbGrid.DataBind();
isd 2006-02-23
  • 打赏
  • 举报
回复

pgy8288和我的想法差不多了,那怎么有把得到的DataRow dr绑定到一个datagrid呢?
luckyprg 2006-02-23
  • 打赏
  • 举报
回复
你可以用SQL语句自动生成一个rownum的字段。
代码如下:
select rownum=(select sum(1) from TableName where 表中唯一不会重复的字段名<=A.表中唯一不会重复的字段名),*
from TableName A
pgy8288 2006-02-23
  • 打赏
  • 举报
回复
上面for写错了个符号
不好意思
pgy8288 2006-02-23
  • 打赏
  • 举报
回复
要不用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做处理
}
luckyprg 2006-02-23
  • 打赏
  • 举报
回复
你可以用SQL语句生动生成一个rownum的字段啊。保存所有记录的编号。
或者用一下变通的方法,在填充DataSet时只填充查询的前10条记录。
DataSet ds = new DataSet();
SqlDataAdapter myCmd = new SqlDataAdapter("查询语句",数据库连接对象);
myCmd.Fill(ds,0,10,"TableName");
这样就只填充前10条记录到DataSet。
0是从第1条记录开始,10是返回的记录数。
luckyprg 2006-02-23
  • 打赏
  • 举报
回复
楼上都说了,假设rownum是一个字段,保存着记录编号。
isd 2006-02-23
  • 打赏
  • 举报
回复
我知道那里错了,我的表里没有rownum列,
按照dv.RowFilter = "[rownum]<10";的写法,好象是选的这一列里值小与10的数据,
我是要拿前10行数据,好象不是我想要的
isd 2006-02-23
  • 打赏
  • 举报
回复

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

异常详细信息: System.Data.EvaluateException: 未找到列 [rownum]。

找不到rownum关键字呀
RoninBlade 2006-02-23
  • 打赏
  • 举报
回复
上面的方法不错。
theodiact 2006-02-23
  • 打赏
  • 举报
回复
楼上的方法可以,就着帮忙顶一下
Eddie005 2006-02-23
  • 打赏
  • 举报
回复
DataGrid1.DataSource=ds.Tables[0].Select("rownum<10");这是不行的,.net可不知道rownum是什么

如果你在读取数据的时候把rownum也作为一列读取出来,那就可以,写法
DataView dv = ds.Table[0].DefaultView;
dv.RowFilter = "[rownum]<10";
DataGrid1.DataSource = dv;
Eddie005 2006-02-23
  • 打赏
  • 举报
回复
绑定到DataGrid,设定每页10行,翻到第一页不就可以了吗???
freetofly1 2006-02-23
  • 打赏
  • 举报
回复
要用SELECT必须在视图上试用

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧