如何在Silverlight中更改PagedCollectionView中的TotalItemCount

时间:2014-06-01 04:56:13

标签: silverlight-4.0 datapager

我正在尝试在datagrid silverlight中进行分页 我正在使用PagedCollectionView进行分页。

 <sdk:DataPager Name="RequestDataPager" PageSize="10" HorizontalAlignment="Left" VerticalAlignment="Top" Source="{Binding Path=PagedRequestRepFamilies}" HorizontalContentAlignment="Center" Width="{Binding ElementName=RequestDataGrid, Path=ActualWidth}"></sdk:DataPager>

我的需求:

这里第一次加载数据网格时,虽然它的记录数是100,但它会获取前10个记录事件

当我尝试更改项目计数时,我需要将项目计数更改为100而不是10,它表示itemcount属性是只读且无法更改。

当我点击第2页时,它应该转到数据库并取回接下来的10条记录,而itemcount仍应为100,它应该继续...

1 个答案:

答案 0 :(得分:0)

以下是答案:

在ViewModel中将CurrentPageIndex属性创建为Integer:

我将pageindex和页面大小传递给服务并返回100条记录:

result.Response = result.Response.Skip(Pageindex * pagesize).Take(pagesize).ToList()

Private Sub RequestDataGrid_PageIndexChanging(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RequestDataPager.PageIndexChanging
        Dim str As String = String.Empty
        If Not GetDataContext(Of RequestListViewModel).Pageindexchanged Then
            If (RequestDataPager.PageIndex +1) >= 1 Then
                GetDataContext(Of RequestListViewModel).GRDPager = RequestDataPager                
                GetDataContext(Of RequestListViewModel).Pageindexchanged = False
                GetDataContext(Of RequestListViewModel).PageindexLoadingrow = False
                GetDataContext(Of RequestListViewModel).IsCallRequestRepFamily = False
            End If
        End If

        'RequestDataPager.PageIndex = GetDataContext(Of RequestListViewModel).RecordCount
    End Sub

在PageIndexChanging中,您无法获取当前页面索引,以获取加载行事件中的当前页面索引:

 Private Sub RequestDataGrid_LoadingRow(ByVal sender As System.Object, ByVal e As System.Windows.Controls.DataGridRowEventArgs) Handles RequestDataGrid.LoadingRow
        e.Row.Header = e.Row.GetIndex + 1 + (CType(RequestDataGrid.DataContext, RequestListViewModel).PagedRequestRepFamilies.PageIndex * CType(RequestDataGrid.DataContext, RequestListViewModel).PagedRequestRepFamilies.PageSize)

        If Not GetDataContext(Of RequestListViewModel).Pageindexchanged Then
            If Not GetDataContext(Of RequestListViewModel).PageindexLoadingrow Then
                GetDataContext(Of RequestListViewModel).CurrentPageIndex = RequestDataPager.PageIndex
                If Not GetDataContext(Of RequestListViewModel).IsCallRequestRepFamily Then
                    GetDataContext(Of RequestListViewModel).FindRequestRepFamilies(GetDataContext(Of RequestListViewModel).SelectedRepFamilies)
                    GetDataContext(Of RequestListViewModel).IsCallRequestRepFamily = True
                End If
            End If
        End If

    End Sub

IsCallRequestRepFamily,在FindRequestRepFamilies的回调中相应地管理Pageindexchanged属性

在将集合绑定为GRDPager.PageIndex = CurrentPageIndex之后,我在viewmodel中设置了datagridpager的页面数量