Silverlight 4.0 代码隐藏中的Silverlight DomainDataSource未加载所有行
我在Silverlight 4中有一个域数据源。我在后面的代码中设置它,我还使用RadDataPager和RadGridViewSilverlight 4.0 代码隐藏中的Silverlight DomainDataSource未加载所有行,silverlight-4.0,domaindatasource,Silverlight 4.0,Domaindatasource,我在Silverlight 4中有一个域数据源。我在后面的代码中设置它,我还使用RadDataPager和RadGridView DomainDataSource dds = new DomainDataSource(); dds.QueryName = "MyQueryName"; dds.DomainContext = ctx; dds.LoadSize = 10; dds.PageSize = 10; dds.AutoLoad = true; radDataPager1.PageSiz
DomainDataSource dds = new DomainDataSource();
dds.QueryName = "MyQueryName";
dds.DomainContext = ctx;
dds.LoadSize = 10;
dds.PageSize = 10;
dds.AutoLoad = true;
radDataPager1.PageSize = 10;
radDataPager1.Source = dds.Data;
radGridView1.ItemsSource = dds.Data;
dds.Load();
第一次加载时,dds.Data.Count为8,网格视图中仅显示8项,即使dds.Data.PageSize为10。在我翻页到下一页后,所有10个对象都会按原样加载
我是Silverlight的新手,不知道这里发生了什么。我是否加载了错误的数据?有什么想法吗?此行为可能是由于模型类中设置了错误的键属性造成的。如果在结果查询中,具有键的行字段被复制,那么DataGrid将只取第一个 示例(书店信息): 您的结果类(BookPriceInfo.cs)如下所示:
public class BookPriceInfo {
[DataMember]
[Key]
public int BookId { get; set; }
[DataMember]
public string Name {get; set; }
[DataMember]
public string StoreName {get; set;}
[DataMember]
public decimal Price {get; set;}
}
如果您有从数据库返回的查询结果:
BookId | Name | StoreName | Price
1 | book1 | store1 | 70.00
1 | book1 | store2 | 69.99
2 | book2 | store1 | 40.00
2 | book2 | store2 | 39.99
然后DataGrig将仅显示以下内容:
BookId | Name | StoreName | Price
1 | book1 | store1 | 70.00
2 | book2 | store1 | 40.00
这是因为DataGrid将按标记为键的字段“区分”结果(仅从具有相同BookId的所有行中获取第一行),因为所有行的结果都应为uniq
解决方案
从具有重复值(BookId)的字段中删除Key
属性,并将其设置为所有行都具有uniqe值的字段(您可以添加一些类似于BookPriceId的列,它将是uniqe)
查询结果:
BookPriceId | BookId | Name | StoreName | Price
1 | 1 | book1 | store1 | 70.00
2 | 1 | book1 | store2 | 69.99
3 | 2 | book2 | store1 | 40.00
4 | 2 | book2 | store2 | 39.99
之后,您应该看到查询返回的所有行。
希望这有帮助:)
BookPriceId | BookId | Name | StoreName | Price
1 | 1 | book1 | store1 | 70.00
2 | 1 | book1 | store2 | 69.99
3 | 2 | book2 | store1 | 40.00
4 | 2 | book2 | store2 | 39.99