两个datagrids一个数据集如何设置界面(许多数据)



我在这里遇到一些问题,即在数据集中显示两个数据集的涂层,这些数据集具有许多相关的关系。并且每个数据表都绑定到一个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的选定项目更新第二个集合。

您的数据杂志应将其物品包装到持有集合的那些属性。

最新更新