2017-09-07 2 views
-1

ここでは、多対多の関係を持つデータセット内の2つのデータセットの表示についていくつかの問題があります。各データテーブルは1つのDatagridにバインドされています。2つのDataGrids 1つのデータセットどのように実体を設定するか(多対多)?

私はVS 2015 DataSet Designerで私のファイルデータベースを設計しました。そのため、1つのdatatable Materialと1つのdatatable Technikがあり、また多くの関係があります。私は私のアプリを起動した場合、私は私のデータベースへの接続を行うANテーブルで自分のデータセットを埋める - すべてがのviewmodelで起こるこの...

private void InitDataSet() 
    { 
     if (File.Exists(dbFilepath)) 
     { 
      using (SQLiteConnection connection = new SQLiteConnection(dbConnection)) 
      using (SQLiteCommand cmd = connection.CreateCommand()) 
      { 
       string query = ""; 

       connection.Open(); 

       systemTime = DateTime.Now; 

       query = "SELECT * FROM Tbl_Materialliste"; 
       dataAdapter = new SQLiteDataAdapter(query, connection); 

       dataAdapter.Fill(MlDb.Tbl_Materialliste); 

       query = "SELECT * FROM Tbl_Technik"; 
       dataAdapter = new SQLiteDataAdapter(query, connection); 
       dataAdapter.Fill(MlDb.Tbl_Technik); 
       //dataAdapter.Fill(MlDb.Temp_Technik); 

       query = "SELECT * FROM Tbl_Besitzt"; 
       dataAdapter = new SQLiteDataAdapter(query, connection); 
       dataAdapter.Fill(MlDb.Tbl_Besitzt); 
      } 

       MlDataSetCollection.Add(MlDb); 

       // hier muss noch die Tabelle "Log" hinzugefuegt werden 
      } 
     } 
     else 
     { 
      // Pfad oder Datei existiert nicht 
     } 
    } 

MlDbは、デザイナーから作成されたオブジェクトであり、拡張データセットです。.. 。

ので、私のXAMLは次のようになります。

  <DataGrid x:Name="MaterialDataGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
           AutoGenerateColumns="False" 
           CanUserAddRows="True" CanUserSortColumns="False" 
           ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" 
           ItemsSource="{Binding Path=MlDb.Tbl_Materialliste, UpdateSourceTrigger=PropertyChanged}" 
           IsSynchronizedWithCurrentItem="True"> 
         <i:Interaction.Triggers> 
          <i:EventTrigger EventName="RowEditEnding"> 
           <ic:CallMethodAction MethodName="RowEditEnding" TargetObject="{Binding}" /> 
          </i:EventTrigger> 
          <i:EventTrigger EventName="SelectionChanged"> 
           <ic:CallMethodAction MethodName="SelectionChanged" TargetObject="{Binding}" /> 
          </i:EventTrigger> 
         </i:Interaction.Triggers> 
         <DataGrid.Columns> 
          <DataGridTextColumn Header="Material" Width="Auto" Binding="{Binding Path=MaterialID}"/> 
          <DataGridTextColumn Header="Materialkurztext" Width="Auto" Binding="{Binding Path=Materialkurztext}"/> 
          <DataGridTextColumn Header="Herstellername" Width="Auto" Binding="{Binding Path=Herstellername}"/> 
          <DataGridTextColumn Header="Her.-Artikelnummer" Width="Auto" Binding="{Binding Path=Her.-Artikelnummer}"/> 
          <DataGridTextColumn Header="Dokument" Width="Auto" Binding="{Binding Path=Dokument}"/> 
          <DataGridTextColumn Header="Subst.-Material" Width="Auto" Binding="{Binding Path=Subst.-Material}"/> 
         </DataGrid.Columns> 
        </DataGrid> 
       </Grid> 
       <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="1" Grid.Column="1" Margin="26,1,-25,-1"> 
        <DataGrid x:Name="TechnikDataGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
           AutoGenerateColumns="False" 
           CanUserAddRows="True" CanUserSortColumns="False" 
           ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" 
           ItemsSource="{Binding Path=MlDb.Temp_Technik}" Margin="0,0,34,0"> 
         <DataGrid.Columns> 
          <DataGridCheckBoxColumn Binding="{Binding Path=IsSelected}" Header="Auswahl" Width="70" /> 
          <DataGridTextColumn Header="Technik ID" Width="100" Binding="{Binding Path=TechnikID}"/> 
          <DataGridTextColumn Header="Techniktyp" Width="100" Binding="{Binding Path=Techniktyp}"/> 
          <DataGridTextColumn Header="Anlage" Width="100" Binding="{Binding Path=Anlage}"/> 
          <DataGridTextColumn Header="Anlagengruppe" Width="100" Binding="{Binding Path=Anlagengruppe}"/> 
          <DataGridTextColumn Header="Bemerkung" Width="100" Binding="{Binding Path=Bemerkung}"/> 
         </DataGrid.Columns> 
        </DataGrid> 

だから、親テーブルが材料であり、子供がTechnikである - どのように私は完全なTechnikで表lsitと、次のデータグリッドに一つの材料を選択することができます他のDataGridは、チェックボックスとの関係を示します。選択されたチェックボックスは、マテリアルハットTechnikと未選択の関係を意味します。

私は本当にここに助けが必要です - 他の勧告があれば教えてください!ありがとうございます事前に

答えて

0

ObservableCollectionにMlDbオブジェクトを分解し、2番目のコレクションが最初のDataGridの選択したアイテムに従ってアイテムを更新するようにすることができます。

DataGridsは、ItemsSourceをコレクションを保持するプロパティにバインドする必要があります。

+0

申し訳ありませんが、本当にあなたのアプローチが得られるかどうかはわかりません... – user8574993

+0

https://msdn.microsoft.com/en-us/library/ff798384.aspx – Mishka

+0

この記事はどのように役立ちますか?たぶん私は初心者ですが、私はmvvmを知っています。私はOCsが何をすることができるかを知っています...しかし、ポイントは私があなたのアプローチが私が直面している問題を解決するために役立つだろうと知りません... これはDataGridで実行され、DG1のitemssourceはdatatable1であり、DG2 itemssourceはdatatable2です... 多分あなたのアプローチを得るかもしれないいくつかのコードを表示することができます – user8574993

関連する問題