我在这里遇到一些问题,即在数据集中显示两个数据集的涂层,这些数据集具有许多相关的关系。并且每个数据表都绑定到一个datagrid。
因此,我在VS 2015数据集设计器中设计了文件数据库,因此有一种数据表材料和一种数据表Technik,也可以使用许多关系。如果我启动我的应用程序,我会与数据库进行连接,并用表填充我的数据集 - 这一切都发生在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是由设计器创建的对象,是一个扩展数据集...
so,我的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-我如何在数据杂志中选择一种材料,该材料在另一个datagrid中使用完整的Technik Table LSIT遵循,并且显示了与复选框的关系。选定的复选框意味着材料帽技术,未选择的无关系。
我真的需要这里的一些帮助 - 如果您有其他建议,请告诉我!预先感谢
您可以将MLDB对象分解为2 ObservableCollection,并根据第一DataGrid的选定项目更新第二个集合。
您的数据杂志应将其物品包装到持有集合的那些属性。