一个Table如何绑定到多个GridView.DataSource

Jenf_Mu 2011-03-14 03:06:56
比如有这样的一个学生表

学生ID 学生所在班级
1 1
2 1
3 1
。。。
5000 10

我要把每个班的学生显示在GridView里。
那么我得写10个SQL语句。
select * from 学生表 where 班级=1
select * from 学生表 where 班级=2
。。。
select * from 学生表 where 班级=10
这样查询效率很低,每个查询都要跟5000条记录再逐一对比一次。

我想要这样的
select * from 学生表 order by 班级

当然这样出来是在一个dataset.tables[0]里
有什么办法
GridView1.DataSource = dataset.tables[0].1班的记录
GridView1.DataSource = dataset.tables[0].2班的记录
...全文
192 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jenf_mu 的回复:]

大侠们深夜不睡,帮忙解答问题,真是可亲可佩呀
[/Quote]
搞定了么?
Jenf_Mu 2011-03-16
  • 打赏
  • 举报
回复
大侠们深夜不睡,帮忙解答问题,真是可亲可佩呀
Jenf_Mu 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 rekym 的回复:]

GridView2.DataSource=ds.Tables[0].DefaultView;


改成:

GridView2.DataSource=ds.Tables[0].DefaultView.ToTable();
[/Quote]
哇,神了,好像还真是这样,虽然不知道为什么
rekym 2011-03-15
  • 打赏
  • 举报
回复
GridView2.DataSource=ds.Tables[0].DefaultView;


改成:

GridView2.DataSource=ds.Tables[0].DefaultView.ToTable();
yutian_31 2011-03-15
  • 打赏
  • 举报
回复
1.返回一个DataTable 然后利用其Select(“班级ID=1”) 来筛选出各个班级的学生 在进行绑定
2.返回一个DataTable dt
DataView dv = new DataView(dt);
dv.RowFilter="班级ID=1";//条件
DataTable dt1 = dv.toTable();//获取班级1的列表
绑定就不说了 。。
Jenf_Mu 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxr0323 的回复:]

select * ffrom 学生表

返回所有数据 返回一个DataTable

然后再匹配。

DataTable.Select("条件");转换数据源 绑定你的Gridview
[/Quote]
怎么绑定呀,我绑定报错呀
Jenf_Mu 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dalmeeme 的回复:]

用视图非常简单:
ds.Tables[0].DefaultView.RowFilter = "学号='20049102'";//定义筛选表达式
GridView1.DataSource=ds.Tables[0].DefaultView;

筛选表达式你自己定义一下,注意数据类型(字符串型要加单引号,int型则不要加)。
[/Quote]
RowFilter不能重复使用啊?
ds.Tables[0].DefaultView.RowFilter = "学号='20049102'";//定义筛选表达式
GridView1.DataSource=ds.Tables[0].DefaultView;

ds.Tables[0].DefaultView.RowFilter = "学号='20049103'";//定义筛选表达式
GridView2.DataSource=ds.Tables[0].DefaultView;
amandag 2011-03-14
  • 打赏
  • 举报
回复
select * from 学生表 where 班级=@classid

不知道楼主所说的"这样查询效率很低,每个查询都要跟5000条记录再逐一对比一次。"是什么意思,如果学生表班级字段做了索引,不会是全表扫描的
dalmeeme 2011-03-14
  • 打赏
  • 举报
回复
用视图非常简单:
ds.Tables[0].DefaultView.RowFilter = "学号='20049102'";//定义筛选表达式
GridView1.DataSource=ds.Tables[0].DefaultView;

筛选表达式你自己定义一下,注意数据类型(字符串型要加单引号,int型则不要加)。
Jenf_Mu 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhangwuji155 的回复:]

[url=http://msdn.microsoft.com/zh-cn/library/59wzthcw.aspx]
protected virtual int Fill(
DataTable[] dataTables,
IDataReader dataReader,
int startRecord,
int maxRecords
)
[/Quote]
IDataReader dataReader,
这个参数什么意思
zhangwuji155 2011-03-14
  • 打赏
  • 举报
回复
[url=http://msdn.microsoft.com/zh-cn/library/59wzthcw.aspx]
protected virtual int Fill(
DataTable[] dataTables,
IDataReader dataReader,
int startRecord,
int maxRecords
)
子夜__ 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jenf_mu 的回复:]

引用 1 楼 roshiyou 的回复:

就如你所说:
GridView1.DataSource = dataset.tables[0].1班的记录
GridView1.DataSource = dataset.tables[0].2班的记录

给GridView1的DataSource赋不同的记录集,但是你绑定只能绑一个记录集啊?

如果你的意思是不想多次查询的话,那么用vi……
[/Quote]



select * ffrom 学生表

返回所有数据 返回一个DataTable

然后再匹配。

DataTable.Select("条件");转换数据源 绑定你的Gridview
Jenf_Mu 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 roshiyou 的回复:]

就如你所说:
GridView1.DataSource = dataset.tables[0].1班的记录
GridView1.DataSource = dataset.tables[0].2班的记录

给GridView1的DataSource赋不同的记录集,但是你绑定只能绑一个记录集啊?

如果你的意思是不想多次查询的话,那么用viewstate保存全部记录,
然后用全部记录.……
[/Quote]
我写10句有什么累的,关于是效率效率,啊,想想数据库怎么查询


select * from 学生表 where 班级=1
的时候,从第1条记录开始对比,看班级是不是1
一直对比到第N条记录

select * from 学生表 where 班级=2
的时候,又再一次从第1条记录开始对比,看班级是不是2
一直对比到第N条记录

。。。
霹雳牙膏 2011-03-14
  • 打赏
  • 举报
回复
就如你所说:
GridView1.DataSource = dataset.tables[0].1班的记录
GridView1.DataSource = dataset.tables[0].2班的记录

给GridView1的DataSource赋不同的记录集,但是你绑定只能绑一个记录集啊?

如果你的意思是不想多次查询的话,那么用viewstate保存全部记录,
然后用全部记录.select(条件)来绑定GridView吧。

62,041

社区成员

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

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

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

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