2009-05-15 26 views
7

は、私が(ツールキットからの)データグリッドを持っていると私は巣DataGrid.RowDetailsTemplate内の別のDataGridにしたいです。トリックは、私は、行の選択に基づいて、メイングリッドに一つのテーブルからデータを戻すために必要とされて行くと、別のテーブルからのadditonalの詳細を取得し、詳細テンプレートのデータグリッドでそれを示しています。ネストされたWPFのデータグリッド

これは2つの別々のDataGridで行うのは簡単ですが、ネストされたバージョンで動作させるのに問題があります。

これも可能ですか? もしそうなら、誰かが私を正しい方向に向けることができますか? LinqToSqlクラスを使用してデータを入力していることに注意してください。

ありがとうございました。あなたがLinqToSQLを使用している場合 -Joel

+2

をすべてその名前には良いと聖なるです、_please_は別の 'datagrid'に巣' datagrid'をしないでくださいしてください。 –

+0

@GregDなぜあなたはそのようなことをしないのですか? – SoftwareSavant

+0

未加工のDBMSを除いて、DataGridは実際には常に間違ったユーザーエクスペリエンスです。それは有効なコンテキスト情報が含まれていない、そしてそれが良いUXの設計の失敗を示すだ、それは密だ、それは複雑だ、重いです。重い複雑なコントロールを他の重いものと重ねると、複雑なコントロールは、まさに悪夢のようなシナリオになります。階層データがある場合は、Windowsエクスプローラのパラダイムをコピーすることを検討してください。ツリーコントロールと組み合わせたより軽いリストビューは、よく知られておりよく理解されているパラダイムです。他のデータグリッドのデータグリッドを_not_ネストしないでください。 –

答えて

5

あなたは簡単に関連付けを使用してこれを行うことができます。

GuyTable

  • 一意ID

GuyActionsTable

  • のUniqueID
  • :私の練習では、私は2つのテーブルを作成しました
  • GuyID
  • アクション説明

私は、このように私のデータグリッドをバインドするいわゆる「GuyActions」

をGuyActionsTable.GuyIDするGuyTable.UniqueIDから1対多の関係を作成しました。私は手でこれをやっているようにエラーすみません:

<w:DataGrid ItemsSource={Binding Source={StaticResource YourDataSource}}> 
<w:DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <w:DataGrid ItemsSource={Binding GuyActions}> 
      <w:DataGrid.Columns> 
       <w:DataGridTextColumn Header="Action" DisplayMemberBinding="{Binding Action_Description}" /> 
      </w:DataGrid.Columns> 
     </w:DataGrid> 
    </DataTemplate> 
</w:DataGrid.RowDetailsTemplate> 
<w:DataGrid.Columns> 
    <w:DataGridTextColumn Header="First Name" DisplayMemberBinding="{Binding First_Name}" /> 
    <w:DataGridTextColumn Header="Last Name" DisplayMemberBinding="{Binding Last_Name}" /> 
</w:DataGrid.Columns> 

関連する問題