日期:2014-05-18  浏览次数:21009 次

关于DataGridView的数据绑定问题
用户表如下
username roles
---------------------
a 1,2
b 1

角色表如下
roleid rolename
--------------------- 
1 系统管理员
2 普通用户

现想让DataGridView实现如下效果:
用户名 角色
-----------------------------
a 系统管理员,普通用户
b 系统管理员

请问该如何实现,不想使用下列方法:
先把用户表取出放到DataTable里,再循环DataTable,修改对应roles的值,然后和DataGridView绑定;
曾经用RowPrePaint事件实现过,即在绘制每一行时,设置改行对应“角色”列的值,单后来发现DataGridView经常重绘,而触发该事件,导致性能低下,所以想寻找更好的方法

------解决方案--------------------
有心无力,帮顶下!
------解决方案--------------------
你的设计有问题,角色和用户应该设计成多对多关系。
你这样解析文本好麻烦。
------解决方案--------------------
只能顶下了
------解决方案--------------------
SQL Server中的用户和角色表就是这样设计的,你可以参考一下那两个系统表。
------解决方案--------------------
心无力,帮顶下!
------解决方案--------------------
虽然还没想到什么好的方法,可是我觉得设计成上面的第二种结构的话,对显示效果貌似也没有很大的便利
------解决方案--------------------
好像是有的,你可以看一下DataGridView的事件的选项。
------解决方案--------------------
两个办法,第一个改数据结构,写sql把角色名带出来;第二个,把角色名那个table先读出来做全局变量,这样子用RowPrePaint去做基本上不会感觉到性能下降,你想一下哦,每次pain都要去跑sql,能不慢吗