首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

DataGrid数据绑定有关问题

2012-03-20 
DataGrid数据绑定问题有2张表,用户表tbUser(主表),角色表tbRole(外键表), 数据层我用的是entity framework

DataGrid数据绑定问题
有2张表,用户表tbUser(主表),角色表tbRole(外键表), 数据层我用的是entity framework,所以在获取外键的时候不像以前ADO.net是RoleID,而是要通过tbUser.tbRole.RoleID导航获取。我在做界面上的数据绑定的时候,如果是tbUser中的名称name我可以这样绑定: 

  <my:DataGridTextColumn Header="用户姓名" Binding="{Binding Path=Name}" />

  可是当绑定角色时却不可以这样绑定:

  <my:DataGridTextColumn Header="用户姓名" Binding="{Binding Path=RoleID}"/>

  因为返回的IList<tbUser>集合中的对象tbUser没有RoleID属性,只有tbRole,但是也不能这样绑定:

  <my:DataGridTextColumn Header="用户姓名" Binding="{Binding Path=tbRole}"/>

因为tbRole是一个对象,我需要的是显示角色名称。
  请高手指点!

[解决办法]
我去看看啥事主键表,外键表。。。
[解决办法]
角色表tbRole(外键表), 不能直接绑定。

你的角色名称在实体中如何定义的? 检查IList<tbRole>。
[解决办法]
我理解的楼主意思就是 

public class A
{
public string Title {get;set;}
public int ID {get;set}
}

public class B
{
public A SubClass {get;set;}
}

现在后台取到的类似List<B>的数据,但前台想绑定的都是class A里面的字段。 所以不知道怎么写了。 

不知道我理解的对否?
[解决办法]
我知道返回list<A> 可以绑定datagrid,但是。。首先要定义class A。。把内容塞进去。。问题是。。我以后绑定很多次。。列名个书不一样。。那我不是要定义很多给类。。每次都这样。。不是命都没了。。所以在研究怎么根据给他字段。。自动生成。。把他封装一下。。可是我不会自动生成呢个class 里面的字段。。还没找到方法。。
[解决办法]

探讨
我知道返回list<A> 可以绑定datagrid,但是。。首先要定义class A。。把内容塞进去。。问题是。。我以后绑定很多次。。列名个书不一样。。那我不是要定义很多给类。。每次都这样。。不是命都没了。。所以在研究怎么根据给他字段。。自动生成。。把他封装一下。。可是我不会自动生成呢个class 里面的字段。。还没找到方法。。

[解决办法]
其实就是数据契约的问题。。我说的是我遇到的问题。。不是针对楼主的。。绑定表要有数据契约。。一般数据契约都是自定义的类。。我尝试着如何多张表集合到一个数据契约里。。字段属性多一点。。用不到的隐藏起来。。把显示的的列名要转变。。不能字节定义的属性名。。SL操作数据库很是麻烦。。我掌握的完全满足不了我对数据库的操作。。真正烦当中。。网上绑定表的例子单片面的。。光单绑定一个。。还没找到好的解决方法。。一个项目里绑定表,字段,做报表。。操作数据库。。总得加起来对数据库操作不下1000次。。各种情况都有。。还没找到和以前的简便方法。。SL让我的封装好的DLL也不能用。。要重新写。。哎。。还是努力学习去了。。
[解决办法]
Entity Framework:

var _users= myData.tbUser;
foreach (var item in _users)
{
item.tbRoleReference.Load();
}
return _users.ToList();

热点排行