将ADO.NET实体框架结果绑定到Silverlight Datagrid

时间:2009-08-27 18:04:41

标签: silverlight entity-framework

我的ASP.NET网站中有我的数据模型,我正在尝试检索tbl_company记录并将这些记录绑定到silverlight中的数据网格 - 非常简单。

我设置了数据库,因此tbl_company有一个链接到tbl_company_scope的外键(company_scope_id)。从tbl_company_scope我基本上想要显示列“范围”。我在Silverlight中的代码如下:

    <data:DataGrid x:Name="dgCompanies" Grid.Row="0" AutoGenerateColumns="False">
        <data:DataGrid.Columns>
            <data:DataGridTemplateColumn>
                <data:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding name, Mode=TwoWay}"></TextBlock>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>

            </data:DataGridTemplateColumn>
            <data:DataGridTemplateColumn>

                <data:DataGridTemplateColumn.CellTemplate >
                    <DataTemplate>
                        <TextBlock Text="{Binding CompanyScope.scope}"></TextBlock>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>

            </data:DataGridTemplateColumn>
        </data:DataGrid.Columns>

    </data:DataGrid>

(所有命名等都是正确的,但基本上“范围”将不会显示我绑定到datagrids ItemSource)

有谁知道如何在数据网格中显示范围列?

干杯

2 个答案:

答案 0 :(得分:1)

我刚刚测试了你的代码而你是对的它应该像你说的那样工作,感谢你的回复,我想我需要去了解更多有关ADO.NET EF的信息。

再次欢呼。

答案 1 :(得分:0)

我在DataGrid中快速测试了“点”绑定,它按预期工作。我基本上拿走了你的Xaml并连接了一些POCO数据类。这是代码:

<data:DataGrid x:Name="dgCompanies" Grid.Row="0" AutoGenerateColumns="False">
        <data:DataGrid.Columns>
            <data:DataGridTemplateColumn>
                <data:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Name, Mode=TwoWay}"></TextBlock>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>

            </data:DataGridTemplateColumn>
            <data:DataGridTemplateColumn>

                <data:DataGridTemplateColumn.CellTemplate >
                    <DataTemplate>
                        <TextBlock Text="{Binding CompanyScope.Scope}"></TextBlock>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>

            </data:DataGridTemplateColumn>
        </data:DataGrid.Columns>
    </data:DataGrid>

数据类:

public class CompanyScope
    {
        public string Scope { get; set; }
    }

    public class Company
    {
        public string Name { get; set; }
        public CompanyScope CompanyScope { get; set; }
    }

最后,构造函数背后的代码:

ObservableCollection<Company> companies = new ObservableCollection<Company>
            {
                new Company { Name="Company One", CompanyScope=new CompanyScope { Scope="Some Scope" }},
                new Company { Name="Company Two", CompanyScope=new CompanyScope { Scope="Some Other Scope" }},
                new Company { Name="Company Three", CompanyScope=new CompanyScope { Scope="More Scope" }}
            };

            dgCompanies.ItemsSource = companies;

我在网格中得到了2列的预期结果,一个显示公司名称,另一个显示其范围。你确定你的Scope对象也被加载了 - 也许你加载了公司而不是他们的Scopes。