1

我正在做一些快速原型设计,并试图模拟一个网站的管理界面并使用 WCF RIA 服务。我能够公开和使用从服务器到客户端的域服务,但是当服务器上的查询结果不包含数据时,我很难在数据网格中自动生成列。

 <riaControls:DomainDataSource Name="domainDataSource1" 
        LoadSize="20" QueryName="GetUsers" AutoLoad="True" >
            <riaControls:DomainDataSource.DomainContext>
                <ds:CobraDomainContext />
            </riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>

<sdk:DataGrid ItemsSource="{Binding Data, ElementName=domainDataSource1}" AutoGenerateColumns="True" IsReadOnly="False" Width="250" Height="150" >
            </sdk:DataGrid>

这会呈现一个空的 250x150 数据网格(无列/无行)。我期待显示用户实体的列,即使没有从服务器返回数据,因为视图最初会有点糟糕。我的大脑似乎无法弄清楚出了什么问题,所以我将使用 stackoverflow 众包。

更新:我有点期待查询的结果是一个类型化的枚举,但似乎 DomainDataService 上的查询结果只是 IEnumerable 但没有类型化,因此内部逻辑需要查看列表以发现什么它包含的数据类型。

所以更新后的问题是:我可以给 DataGrid 一个提示,说明将返回什么类型的数据或自动生成网格中的列(通过 XAML 或代码)?

4

1 回答 1

0

我猜你的 ItemsSource 枚举没有输入,对吧?如果只是对象列表,数据网格将找不到实体的公共属性。

我不知道你的实体类是怎样的,但试试这段代码看看我在说什么:

某处:

public class User {
    public string Name { get; set; }
    public int Age { get; set; }
}

xml:

 <my:DataGrid x:Name="datagrid"/>

代码隐藏:

public MainPage() {
    InitializeComponent();
    datagrid.ItemsSource = new List<User>();
}

该列表为空,但 datagrid 将选择列名,因为我使用的是用户列表。它可能是用户枚举等。

我希望它有所帮助,

干杯

编辑:关于更新的问题:您可以尝试使用转换器。

于 2010-10-11T15:25:25.630 回答