2012-01-20 22 views
0

我有兩個表:部門和用戶。該部門是一個具有字段PDeptID和DeptID(其關鍵字)的樹型結構,因此我將其放入XtraTreeList組件中。如何在devexpress treelist中連接兩個表(master-detail)?

用戶錶鏈接到具有DeptAndUser表的Department,並且其中有DeptID,UserId字段。

我想設置TreeList和Department,當我點擊部門時,右邊的網格控件將顯示這個部門中的所有用戶。

我該如何完成這個想法?

回答

1

我通常有id字段作爲TreeListColumn,我可以選擇不顯示的情況下,它對用戶沒有用。這樣我仍然可以輕鬆訪問我的對象ID。

根據提供的信息訪問與departmentId匹配的實際用戶有幾種可能性。例如,如果列表中的所有用戶都可以使用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事件。

+0

我會試試看。非常感謝! – bnPYSse