我正在做一些快速原型设计,并试图模拟一个网站的管理界面,并使用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数据网格(没有列/没有行)。我期待显示用户实体的colunms,即使没有从服务器返回任何数据,因为视图最初会有点糟糕。我的大脑似乎无法弄清楚出了什么问题,所以我将使用stackoverflow进行众包。
更新:我有点期望查询的结果是一个类型化的枚举,但看起来DomainDataService上的查询结果只是IEnumerable而不是类型,所以内部逻辑需要查看列表发现它包含的数据类型。
所以更新的问题是:我可以给DataGrid一个提示,告诉我们将返回什么类型的数据,或者自动生成网格中的列(通过XAML或代码)??
答案 0 :(得分:0)
我猜你的ItemsSource枚举没有打字,对吧?如果它只是一个对象列表,则datagrid将找不到实体公共属性。
我不知道您的实体类是怎样的,但请尝试使用此代码来查看我在说什么:
某处:
public class User {
public string Name { get; set; }
public int Age { get; set; }
}
的Xaml:
<my:DataGrid x:Name="datagrid"/>
代码隐藏:
public MainPage() {
InitializeComponent();
datagrid.ItemsSource = new List<User>();
}
列表为空,但datagrid将选择列名,因为我使用的是用户列表。它可以是用户枚举等。
我希望它有所帮助,
干杯
已编辑:关于更新的问题:您可以尝试使用转换器。