我有兩個表:部門和用戶。該部門是一個具有字段PDeptID和DeptID(其關鍵字)的樹型結構,因此我將其放入XtraTreeList組件中。如何在devexpress treelist中連接兩個表(master-detail)?
用戶錶鏈接到具有DeptAndUser表的Department,並且其中有DeptID,UserId字段。
我想設置TreeList和Department,當我點擊部門時,右邊的網格控件將顯示這個部門中的所有用戶。
我該如何完成這個想法?
我有兩個表:部門和用戶。該部門是一個具有字段PDeptID和DeptID(其關鍵字)的樹型結構,因此我將其放入XtraTreeList組件中。如何在devexpress treelist中連接兩個表(master-detail)?
用戶錶鏈接到具有DeptAndUser表的Department,並且其中有DeptID,UserId字段。
我想設置TreeList和Department,當我點擊部門時,右邊的網格控件將顯示這個部門中的所有用戶。
我該如何完成這個想法?
我通常有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事件。
我會試試看。非常感謝! – bnPYSse