2012-01-20 3 views
0

私は2つのテーブルを持っています:部門とユーザー。部門はフィールドPDeptIDとDeptID(キー)を持つツリースタイルの構造なので、XtraTreeListコンポーネントに配置します。devexpress treelistで2つのテーブル(マスターディテール)を接続するにはどうすればいいですか?

DeptAndUserテーブルを使用してDepartmentにリンクされたUserテーブル.DeptID、UserIdフィールドがあります。

DepartmentでTreeListを設定したいと思います。部門をクリックすると、この部門のすべてのユーザーが右側のグリッドコントロールに表示されます。

このアイデアはどのように達成できますか?

答えて

1

私は一般的に、ユーザには役に立たない場合に表示しないことを選択できるTreeListColumnとしてidフィールドを持っています。そうすれば、私は自分のオブジェクト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

関連する問題