【问题标题】:How to render wpf master-detail datagrids from relational dataset如何从关系数据集中呈现 wpf 主从数据网格
【发布时间】:2017-03-04 21:07:25
【问题描述】:

这是来自How to display related data from dataset in wpf datagrid 的交叉帖子,我无法成功应用建议的答案。

我的情况与源中描述的情况相同:我在一个共享关系的数据集中有 2 个数据表(1 个带有发票,1 个带有指定发票的行),我还想在两个数据网格作为主从视图。

我已经研究了 CreateChildView 方法,但我在某处遗漏了一个关键点。我当前获取子视图的代码:

public DataView ChildView {
    get {
        return ParentChildRelation.ParentTable.DefaultView[0].CreateChildView("orders")
    }
}

问题是双重的,首先我显然已经修复了索引,这意味着我总是得到父表第一行的子视图。其次,当在父视图中选择新行时,我在获取新子视图时失败了(ChildView 仅在初始化时被调用)。

我的 XAML:

<Grid>
    <DataGrid
        ItemsSource="{Binding Path=ParentView}"
        AutoGenerateColumns="True"
        Name="dataGrid1" 
    />

    <DataGrid
        ItemsSource="{Binding Path=ChildView}"
        AutoGenerateColumns="True"
        Name="dataGrid2"
    />
</Grid>

我想将此作为 XAML 解决方案并避免编写事件处理程序来更新子视图。我已经尝试过使用 DataContext 但无济于事,关于如何将这种结构与数据集和关系结合使用的文档非常少(让我怀疑我是否走在正确的道路上)。

我缺少详细视图应该如何知道选择了哪个父级以及应该显示哪些项目的语义。

【问题讨论】:

    标签: c# wpf xaml data-binding


    【解决方案1】:

    我已经好久没用DataSet了,不过这种master-detail场景你可以试试

     <DataGrid
            ItemsSource="{Binding SelectedItem, ElementName=ParentDataGrid, Converter={...}}"/>
    

    您将获得SelectedItem,这将是父行,然后您可以对该行执行某些操作并构造/获取ICollection 以从该IValueConverter 返回。

    【讨论】:

    • 这就像一个魅力!很棒的解决方案,甚至让我浪费了很多表关系的支持代码!
    猜你喜欢
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2012-12-28
    相关资源
    最近更新 更多