【问题标题】:Displaying information from another table in relation from another in DataGrid WPF在 DataGrid WPF 中显示来自另一个表的相关信息
【发布时间】:2020-05-11 10:41:01
【问题描述】:

出于学习目的,我正在为银行帐户制作类似于数据库管理器客户端的东西。我正在使用 DataTable 对象,我想使用它们之间的关系显示存储在表中的内容,这(可能)可以使用 DataGrid 自动完成。

例如,我有 Banks、Owners 和 Accounts 表。如何在 Accounts 表表示中显示所有者或银行名称,而不是在 DataGrid 中显示其 ID? Current tables representation in DataGrid

我使用 DataTables 作为我的 DataGrid 控件的 DataContext。

dataGrid.DataContext = ((DataTable)table).DefaultView;

我了解了控件(组合框、列表框等)中的 DisplayMemberPath 属性,但我没有找到任何关于如何在 DataGrid 行中使用它的信息。

谢谢!

【问题讨论】:

    标签: c# wpf datatable datagrid


    【解决方案1】:

    您可以将 Datagrid 的 AutoGenerateColumns 属性设置为 False 并自己创建列

    <DataGrid AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Bank Name" Binding="{Binding BankName}"/>
                <DataGridTextColumn Header="Bank Name" Binding="{Binding OwnerName}"/>
                <DataGridTextColumn Header="Bank Name" Binding="{Binding Account}"/>
            </DataGrid.Columns>
    </DataGrid>
    

    例如,我有 Banks、Owners 和 Accounts 表。如何在 Accounts 表表示中显示所有者或银行名称,而不是在 DataGrid 中显示其 ID?

    我假设您有 3 个由外键引用的表。从数据库中检索它们时,您应该首先将它们加入,然后创建您的视图将很容易。

    【讨论】:

    • 如果我想将一个 DataGrid 用于不同的 DataTables 怎么办?
    • 不,您不能一次将多个数据表绑定到单个数据网格,您实际上应该做的是,将这些不同的表连接到一个表中。您可以使用 LINQ 在 c# 中执行此操作。如果您可以展示这些表格的结构以及您尝试实现的示例输出,也许我可以为您的问题提供解决方案。
    • 我的意思是我需要绑定具有不同结构的表,而不是一次绑定多个表。现在我以编程方式构建列。你帮了我很多,谢谢!
    • 很高兴为您提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2013-07-29
    • 2015-12-22
    相关资源
    最近更新 更多