C# 两个数据网格一个数据集如何设置实现(多对多)?
我在这里遇到了一些问题,关于在一个数据集中显示两个数据表的关系,这两个数据表具有多对多关系。每个数据表都绑定到一个数据网格 因此,我在VS 2015 DataSet Designer中设计了我的文件数据库,因此有一个datatable材质和一个datatable Technik,以及多对多关系。若我启动我的应用程序,我会连接到我的数据库,并用表格填充我的数据集-这一切都发生在viewmodel中C# 两个数据网格一个数据集如何设置实现(多对多)?,c#,wpf,database,mvvm,datagrid,C#,Wpf,Database,Mvvm,Datagrid,我在这里遇到了一些问题,关于在一个数据集中显示两个数据表的关系,这两个数据表具有多对多关系。每个数据表都绑定到一个数据网格 因此,我在VS 2015 DataSet Designer中设计了我的文件数据库,因此有一个datatable材质和一个datatable Technik,以及多对多关系。若我启动我的应用程序,我会连接到我的数据库,并用表格填充我的数据集-这一切都发生在viewmodel中 private void InitDataSet() { if (F
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>
因此,父表是Material,子表是Technik-如何在datagrid中选择一种材料,然后在另一个datagrid中选择一个完整的Technik表lsit,并显示与复选框的关系。选中复选框表示材料帽子技术和未选中无关系
我真的需要一些帮助这里的家伙-如果你有其他的建议,让我知道!提前感谢您可以将MlDb对象分解为2个ObservableCollection,并让第二个集合根据第一个DataGrid的选定项更新其项
您的数据网格应该将其ItemsSource绑定到保存集合的属性。这篇文章有什么帮助?也许我是个新手,但我知道mvvm,我知道OCs能做什么。。。但问题是,我不知道你的方法将如何帮助我解决我面临的问题。。。这是在datagrid中完成的,DG1的itemssource是datatable1,DG2的itemssource是datatable2。。。也许你可以展示一些代码,我可能会得到你的方法