Silverlight 4.0 代码隐藏中的Silverlight DomainDataSource未加载所有行

Silverlight 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

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

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