首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码隐藏中的Silverlight DomainDataSource不加载所有行

代码隐藏中的Silverlight DomainDataSource不加载所有行
EN

Stack Overflow用户
提问于 2010-09-02 21:10:24
回答 1查看 2.4K关注 0票数 1

我在Silverlight 4中有一个域数据源,我正在后面的代码中设置它,我还使用了RadDataPager和RadGridView。

代码语言:javascript
复制
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很陌生,不知道这是怎么回事。我把数据加载错了吗?有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2010-12-17 10:57:40

此行为可能是由于模型类中的属性集合错误造成的。如果在结果查询中,具有字段的行被复制,那么DataGrid将首先接受。

示例(书店信息):结果类(BookPriceInfo.cs)如下所示:

代码语言:javascript
复制
    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;}
   }

如果您有从数据库返回的查询结果:

代码语言:javascript
复制
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将只显示以下内容:

代码语言:javascript
复制
BookId | Name | StoreName | Price 
1 | book1 | store1 | 70.00  
2 | book2 | store1 | 40.00

这是因为DataGrid将根据标记为Key的字段“区分”结果(只从所有具有相同BookId的行中获取第一行),因为对于所有行,它应该是uniq。

解决方案

从具有重复值( Key )的字段中删除BookId属性,并将其设置为所有行都具有uniqe值的字段(您可以添加一些列,比如BookPriceId,它将是uniqe)。

代码语言:javascript
复制
    public class BookPriceInfo {
      [DataMember]
      public int BookId { get; set; }
      [DataMember]
      public string Name {get; set; }
      [DataMember]
      public string StoreName {get; set;}
      [DataMember]
      public decimal Price {get; set;}
      [DataMember]
      [Key]
      public int BookPriceId {get; set;}
   }

查询结果:

代码语言:javascript
复制
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

之后,您将看到查询返回的所有行。希望这会有所帮助:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3631299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档