У меня обычно есть поле id в виде TreeListColumn, которое я могу выбрать, чтобы оно не отображалось в тех случаях, когда оно бесполезно для пользователя. Таким образом, у меня все еще есть легкий доступ к моим идентификаторам объектов.
Существует несколько возможностей, основанных только на предоставленной информации, для доступа к фактическим пользователям, которые соответствуют 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 и использовать его в качестве источника данных для сетки. Независимо от вашей методологии получения / хранения пользовательских данных, вам, скорее всего, потребуется обработать событие focusNodeChanged.