Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在devexpress树列表中连接两个表(主详细信息)?_.net_Devexpress_Master Detail_Xtratreelist - Fatal编程技术网

.net 如何在devexpress树列表中连接两个表(主详细信息)?

.net 如何在devexpress树列表中连接两个表(主详细信息)?,.net,devexpress,master-detail,xtratreelist,.net,Devexpress,Master Detail,Xtratreelist,我有两张表:部门表和用户表。department是一个树状结构,字段PDeptID和DeptID是其键,因此我将其放入XtraTreeList组件中 用户表通过DeptAndUser表链接到Department,其中有DeptID、UserId字段 我想用Department设置树列表,当我单击Department时,右侧的网格控件将显示该部门中的所有用户 如何实现这个想法?我通常将id字段作为TreeListColumn,在对用户没有用处的情况下,我可以选择不显示它。这样,我仍然可以轻松访问我

我有两张表:部门表和用户表。department是一个树状结构,字段PDeptID和DeptID是其键,因此我将其放入XtraTreeList组件中

用户表通过DeptAndUser表链接到Department,其中有DeptID、UserId字段

我想用Department设置树列表,当我单击Department时,右侧的网格控件将显示该部门中的所有用户


如何实现这个想法?

我通常将id字段作为TreeListColumn,在对用户没有用处的情况下,我可以选择不显示它。这样,我仍然可以轻松访问我的对象id

仅根据提供的信息就有几种可能访问与departmentId匹配的实际用户。例如,如果列表中有所有用户,则可以使用linq仅获取与树列表中所选部门匹配的用户,然后将其用于数据源

例如:

VB.NET:

Private Sub TreeList1_FocusedNodeChanged(sender As Object, e As DevExpress.XtraTreeList.FocusedNodeChangedEventArgs) Handles TreeList1.FocusedNodeChanged
    If e.Node IsNot Nothing Then
        Dim id As Integer = CInt(e.Node.GetValue("Id"))
        Dim ds As List(Of UserInfo) = (From user As UserInfo In UserList Where user.DeptId = id Select user).ToList
        GridControl1.DataSource = ds
        GridControl1.RefreshDataSource()
    End If
End Sub
C:


如果您的部门对象实际上有一个用户列表作为属性,那么您可以直接从树列表数据源中的实例访问该列表,并将其用作网格的数据源。无论您采用何种方法获取/存储用户数据,您都可能需要处理focusedNodeChanged事件

我试试看。非常感谢!
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
        {
            if (e.Node != null) {
                int id = Convert.ToInt32(e.Node.GetValue("Id"));
                List<UserInfo> ds = (from user in UserList where user.DeptId == id select user).ToList;
                GridControl1.DataSource = ds;
                GridControl1.RefreshDataSource();
           }
        }