locked
当前datagrid的DomainContext传递到ChildWindow时,只有当前LoadSize的记录个数.怎样可以将当前datagrid的所有记录传递到ChildWindow中. RRS feed

  • 问题

  • 当前datagrid的DomainContext传递到ChildWindow时,只有当前LoadSize的记录个数.怎样可以将datagrid的所有记录传递到ChildWindow中.

    比如LoadSize=10,则Context传递到ChildWindow时,只有10个记录.而不是当前datagrid的所有个数
    aaaa
    2009年7月8日 2:16

答案

  • 这种情况下确实只有10条数据从Server Load了过来. 这就是当前DataGrid的所有个数.
    如果你想Load所有的,你可以直接操作DataContext 把所有数据Load到client端先.
    2009年7月12日 17:41

全部回复

  • 有点混, 你的dataGrid是绑定到DomainContext上的? LoadSize是DomainDataSource的属性啊.
    你传递过去是怎样传的?你可以试一下绑定到DomainContext.Entities.OfType<...>()
    2009年7月8日 6:05
  • 构造函数传参过去的.

    如:

    UserContext context = (UserContext)dds.DomainContext;
    UserForm form = new UserForm(context);

    //窗口构造函数
    public UserForm(UserContext context)
    {
         //这里赋值
    }


    aaaa
    2009年7月8日 9:30
  • 你怎样赋值的?
    如果你检查context.xxxx(entitylist name), 或者调用Entities.GetEntityList<T>应该能获得所有已经load的entity的。Entity一旦经过DomainContext Load到client端,就会缓存,通过DomainContext是可以找到他们的。

    2009年7月8日 21:03
  • 你怎样赋值的?
    如果你检查context.xxxx(entitylist name), 或者调用Entities.GetEntityList<T>应该能获得所有已经load的entity的。Entity一旦经过DomainContext Load到client端,就会缓存,通过DomainContext是可以找到他们的。

    这样赋值的
    <riaControls:DomainDataSource x:Name="PersonalDataSource" LoadSize="13" LoadMethodName="GetPersonals" AutoLoad="True" LoadDelay="0:0:0.25">
                    
                    <riaControls:DomainDataSource.DomainContext>
                        <ds:PersonalContext></ds:PersonalContext>
                    </riaControls:DomainDataSource.DomainContext>
                    
                    <riaControls:DomainDataSource.SortDescriptors>
                        <riaData:SortDescriptor Direction="Ascending" PropertyPath="Name"/>
                    </riaControls:DomainDataSource.SortDescriptors>

                </riaControls:DomainDataSource>


    aaaa
    2009年7月9日 1:08
  • personalContext.Entities.GetEntityList<Personal>().Count

    这样取得的结果还只是每页的记录个数,取不到所有记录的个数,不知道用什么属性
    aaaa
    2009年7月9日 1:21
  • 奇怪了. 不好意思,手头没有这个版本的,可否测试如下:

    • 在传给ChildWindow前,DomainContext已经把数据都Load完了吗? 在Server端设个断点,看是否被多次Hit到.
    • 如果不传到ChildWindow, 你检查DomainContext.Entities的时候,有所有的数据吗?
    • LoadDelay实际上是为Filter准备的,如果想设间隔,可以用LoadInterval.
    2009年7月9日 2:37
  • 如果不传到ChildWindow, 你检查DomainContext.Entities的时候,有所有的数据吗?

    也只有10条,就是当前页的个数
    aaaa
    2009年7月10日 9:51
  • 所以看来 不是传递给ChildWindow时出的问题,你的DomainDataSource连DataPager或者用了什么分页设置了吗?
    2009年7月10日 16:25
  • 是这样设置的:
    DomainDataSource.LoadSize=10
    DtaPager.PageSize=10


    aaaa
    2009年7月12日 13:46
  • 这种情况下确实只有10条数据从Server Load了过来. 这就是当前DataGrid的所有个数.
    如果你想Load所有的,你可以直接操作DataContext 把所有数据Load到client端先.
    2009年7月12日 17:41
  • 我在传递之前,再load了一次,就可以了


    aaaa
    2009年7月13日 2:55