将两个数据库表绑定到同一个Datagrid

时间:2011-10-01 20:32:05

标签: c# wpf binding datagrid

我想知道如何在同一个wpf数据网格中使用来自更多Sql Compact数据库的两个不同的表。我目前有两个表,Accounts和AccountType。在帐户中有一个外键将其链接到AccountType,其中它是该类型的ID号。我还在帐户中有一个字段将其链接到父帐户(本质上是另一个帐户ID的外键)。下面是我必须将datagrid绑定到Accounts表的wpf。

<Window.Resources>
    <my:MyAccountantDBDataSet x:Key="myAccountantDBDataSet" />
    <CollectionViewSource x:Key="accountsViewSource" Source="{Binding Path=Accounts, Source={StaticResource myAccountantDBDataSet}}" />
    <CollectionViewSource x:Key="accountTypeViewSource" Source="{Binding Path=AccountType, Source={StaticResource myAccountantDBDataSet}}" />
</Window.Resources>

            <DataGrid Background="DimGray" Name="GridAccounts" CanUserAddRows="True" CanUserDeleteRows="True" ItemsSource="{Binding Source={StaticResource accountsViewSource}}" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Name" Binding="{Binding Path=AccountName}"/>
                    <DataGridTextColumn Header="Description" Binding="{Binding Path=AccountDesc}" />
                    <DataGridTextColumn Header="Number" Binding="{Binding Path=AccountNumber}"/>
                    <DataGridTextColumn Header="Type" />
                    <DataGridTextColumn Header="Parent Account" />
                </DataGrid.Columns>
            </DataGrid>

我想要做的是将Type列绑定到AccountType表并显示Type Name,而不是Type id。此外,对于父帐户,同样的想法,我不想显示身份证号码,而是显示帐户名称,如果它有父帐户。我怎么能对这两列做到这一点?

1 个答案:

答案 0 :(得分:2)

您是否可以创建一个连接数据库中两个表的视图,然后从C#查询视图? 这样,所有处理都在数据库上完成,并且比您的应用程序更有效。