DataGrid绑定多个表数据有关问题


DataGrid绑定多个表数据问题
三个表
1:user用户表
字段比如有:ID,Name,department,role
2:Department部门表
字段有:ID,name
3:Role角色表
字段有:ID,name

如何查询把用户的姓名,所属部门,角色查询并显示到DataGrid上面
要求查询出来的值由DataTable做数据源绑定到DataGrid上面,请问怎么解决

紧急!谢谢大虾们!!!

如建临时表请问怎么处理,小弟不是很熟悉,如果建试图又是如何去解决的?

麻烦高手赐教!

.net 程序开发 asp

Moonkid 13 years, 10 months ago


user用户表和Role角色表是一对一关系的,那就用简单的视图或者直接拼SQL语句读取。如果是一对多关系,可以用DataGrid嵌套或者写条复杂点的SQL语句了。

我不是云鬼 answered 13 years, 10 months ago


只有三个表,直接查询就好了,不是很麻烦

BAKA王子 answered 13 years, 10 months ago


前面的我就不写了
da.fill(dt, "表1,表2,表3,表4 ")
DataGrid1.DataSource=dt;
DataGrid1.DataBind();

國民擲蘿兵 answered 13 years, 10 months ago


1. string s= "select a.,b.,c* from user a,Department b,Role c where a.department=b.ID and a.role=c.ID "

2.DataGrid1.DataSource=//执行sql语句返回来的DataTable
DataGrid1.DataBind();

zm6190 answered 13 years, 10 months ago


一條sql就能解決的問題,搞那麼複雜,大項目  

MIsSA answered 13 years, 10 months ago


自己写一个object datasource啦

FlyD火羽 answered 13 years, 10 months ago


有两套方案:
一、在SQL查询语句中使用连接(假如楼主你只关心结果)
select a.ID,a.Name,a.department,a.role,
b.ID,b.name,c.ID,c.name
from 用户表 a,部门表 b,角色表 c
where a.department=b.ID and a.role=c.ID
这样直接连接的好处就是简单,但假如楼主你查询的数据条目数不多完全可以考虑这样做,这样做的坏处就是性能低下,数据库中实体关系结构散乱。
二、建立表与表之间的关系,然后创建视图
关系草图: 部门表 《- 用户表 《- 角色表
有了正确的关系后创建视图便比较简单,但要注意一点的是视图当中表与表的连接是左连接、右连接还是内连。
这样做的好处就是解决方案一的坏处,这样做的坏处刚好破坏了方案一的好处。

sundydy answered 13 years, 10 months ago


如果是要这三个表的内容用一条查询语句就可以满足
生成视图也可以但是不方便以后的变动
如果你不怕麻烦 还可以分别查询3个表然后组合datatable
再对datagridbind

西行寺幽々孒 answered 13 years, 10 months ago


在数据库上做一个包含表1、2、3各需要字段的视图,应该easy,楼上正解。

永远鲜红幼月 answered 13 years, 10 months ago


这种情况,做成视图比较通用一点.
create view view_test
as
select a.,b.,c* from user a join Department b on a.department=b.id
join role c on a.role=c.id

不好有怪兽 answered 13 years, 10 months ago


三个表建立试图view,直接用datagrid绑定试图view就可以

圊賰米唐淉銫 answered 13 years, 10 months ago





1. string s= "select a.,b.,c* from user a,Department b,Role c where a.department=b.ID and a.role=c.ID "

2.DataGrid1.DataSource=//执行sql语句返回来的DataTable
DataGrid1.DataBind();


宇智波佐助 answered 13 years, 10 months ago

Your Answer