使用datapager和datagrid访问某个成员

时间:2011-01-19 15:38:58

标签: c# silverlight datagrid binding datapager

问候,

我有一个DataGrid显示一个PagedCollectionView,其中包含了总记录数。

总共我们有大约4220条记录,每页显示20条记录,我们有大约210页。

现在我一直在努力实现这个目标:

当我搜索某个人时,我想让这个人显示在页面顶部,并将页面设置为它所在页面附近的任何内容。

我设法使用Linq Get items higher then lastname中给出的示例将此人放在首位,但是PagedCollectionview被这些结果覆盖。由于这会在所需人员之前跳过所有内容,因此页面数量会有所不同。

基本上我想要的是拥有一个我可以输入“Jan”的搜索字段。然后我希望页面跳转到Jan可能的页面(+/- 1页更低或更高)并将“Jan”作为第一个记录。

1 个答案:

答案 0 :(得分:0)

找到我自己的答案。

不是很好的方式,但是,因为在任何时候首先加载成员的总数,我创建了一个检查以查看当前加载的数量是否高于首次加载的总数量。

像:

if (loadOperation.TotalEntityCount >= itemCount || !string.IsNullOrEmpty(FilterText))
{
    this.ItemCount = loadOperation.TotalEntityCount;
}
else
{
    if (!DeleteMember)
    {
        pageIndex = (int)((this.ItemCount - loadOperation.TotalEntityCount) / this.PageSize);
        RaisePropertyChanged("PageIndex");
    }
    else
    {
        DeleteMember = false;
        itemCount -= 1;
    }
}

删除成员是为了确保在删除成员时不会尝试设置页面索引,因此TotalEntityCount将比itemcount低1。