0

我有一个数据网格,它有一个组合框列。

-datagrid的itemsource将通过RIA WCF绑定到数据库中的数据

-数据网格内的组合框的 itemsource 将绑定到 ListFinancialAccountType 属性,该属性是财务帐户类型的集合(也通过 RIA WCF 检索)。

我可以显示组合框的所有可用帐户类型名称的列表。但是,我无法为组合框设置默认值,该默认值应与数据网格中每一行的值相匹配

例如:combobox的值会告诉我们金融账户是什么类型的(Asset, income,..)。但是,它在行中的实际值是一个整数类型(FinancialAccountTypeId),但我希望它显示为“资产”、“收入”、......所以我需要查看金融账户类型列表(这将通过 RIA WCF 检索)。FinancialAccountType 具有 FinancialAccountTypeId 和 AccountTypeName 属性。

因此,在数据网格的行上,组合框将显示“资产”、“收入”、...而不是 1,2、...。

对于我的 FinancialAccount:属性是

                      AccountDescription  

                      AccountNumber

                     FinancialAccountTypeId                  example: 1,2,...

                     FinancialAccountType                   --->navigation property

对于我的 FinancialAccountType: 属性是

                      AccountTypeName                       example: "asset", ...

                      FinancialAccountTypeId                example: 1, 2...

                        FinancialAccounts                    ---> navigation property

在我后面的代码中,我还填充了一个财务账户类型列表,我认为我在这里必须有一个加载问题。任何输入将不胜感激

这是我的代码

 public partial class Financial_Accounts : Page
{
    public Financial_Accounts()
    {
        InitializeComponent();
    }

    // Executes when the user navigates to this page.
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        FinancialAccountContext financial_ctx = new FinancialAccountContext();
        financial_ctx.Load(financial_ctx.GetFinancialAccountsQuery());
        financialAccountDataGrid.ItemsSource = financial_ctx.FinancialAccounts;

    }

}

public class Financial_Account_Types : ObservableCollection<FinancialAccountType>
{
    public EntitySet<FinancialAccountType> ListFinancialAccountType
    {
        get 
        {
            FinancialAccountContext financial_ctx = new FinancialAccountContext();
            financial_ctx.Load(financial_ctx.GetFinancialAccountTypesQuery());
            return financial_ctx.FinancialAccountTypes;
        }
    }
}

这是我的 XAML

 <Grid.Resources>
        <financial:Financial_Account_Types x:Key="FinancialAccountTypes"/>
    </Grid.Resources>
    <sdk:DataGrid AutoGenerateColumns="False" Height="159" HorizontalAlignment="Left" Name="financialAccountDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="280">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn x:Name="accountDescriptionColumn" Binding="{Binding Path=AccountDescription}" Header="Account Name" Width="SizeToHeader" />
            <sdk:DataGridTextColumn x:Name="accountNumberColumn" Binding="{Binding Path=AccountNumber}" Header="Account Number" Width="SizeToHeader" />
            <sdk:DataGridTemplateColumn x:Name="financialAccountTypeIdColumn" Header="Account Type" Width="SizeToHeader">
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox  ItemsSource="{Binding ListFinancialAccountType, Source={StaticResource FinancialAccountTypes},Mode=TwoWay}"
                                    SelectedValue="{Binding FinancialAccountTypeId, Mode=TwoWay}"

                                  DisplayMemberPath="AccountTypeName"
                                  SelectedValuePath="FinancialAccountTypeId"
                                  />

                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </sdk:DataGridTemplateColumn>
        </sdk:DataGrid.Columns>
    </sdk:DataGrid>
4

1 回答 1

0

看看凯尔麦克莱伦解决方案:http:
//blogs.msdn.com/b/kylemc/archive/2010/06/18/combobox-sample-for-ria-services.aspx

于 2010-09-07T20:05:33.007 回答