0

我有两个表:部门和用户。部门是一个树型结构,带有字段 PDeptID 和 DeptID(它的键),所以我把它放到 XtraTreeList 组件中。

User 表通过 DeptAndUser 表链接到 Department,其中包含 DeptID、UserId 字段。

我想设置带有部门的 TreeList,当我单击部门时,右侧的网格控件将显示该部门中的所有用户。

我如何实现这个想法?

4

1 回答 1

1

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

仅基于提供的信息来访问与部门 ID 匹配的实际用户,有几种可能性。例如,如果您有一个列表中的所有用户,您可以使用 linq 只获取与 treeList 中选择的部门匹配的用户,然后将其用于数据源。

例如:

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#:

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();
           }
        }

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

于 2012-01-20T16:22:38.613 回答