我正在尝试在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,它应该继续...
答案 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的页面数量