我正在寻找一种很好的分页列表视图技术
目前我正在为我工作的公司构建一个Active Directory(LDAP)管理器,该公司拥有超过12,000名员工,我们需要能够轻松浏览这些
我正在考虑的两种分页是:
< >
,这将按(page * limit) - 1
我喜欢的另一种方式是:
a-f
的多个标签,这些标签会按照第一个字符对列表进行排序,并查看是否在范围内。我坚持要做到这一点的方法;有没有人有任何好的例子或资源?
数据即将发布,有1个主要请求并存储在内存中,很快就会存储在缓存的XML文件中以释放内存,所以如果从那里读取会更快,那就没关系。
我正在使用.NET Framework 4.0并绑定到WinForms。
答案 0 :(得分:1)
您想要在应用程序的LDAP层请求分页数据,gui将只显示要询问您要显示的页码的页面。现在就LDAP而言,我相信System.DirectoryServices的 DirectorySearcher类具有分页功能:
http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher(VS.80).aspx
答案 1 :(得分:0)
我不知道选项卡,但你当然可以为A-Z设置一排按钮或LinkButtons。标签用于将控件组织成页面而不是数据;使用制表符要求你在每个TabPage上都有一个ListView。
我会创建一个查找UserControl,特别是如果在多个地方使用此功能。对于布局,您只需创建UserControl,然后将ListView和任何导航控件放入按钮,LinkButtons等等。您可以考虑使用FlowLayoutPanel或类似方法动态执行此操作。
对于代码隐藏,您需要能够在页面中获得结果。 Linq的首选方式是:
var onePage = userDataSource.Skip((pageNumber-1)*perPage).Take(perPage);
现在,您的导航控件操纵pageNumber并告诉ListView使用上面的Linq将自身重新绑定到新页面的数据。
对于第一个角色的快速访问,在Linq中再次这样做很容易。在您进入Cs之前,不要跳过X行,只过滤掉所有不以C开头的行:
var startswithC = userDataSource
.Where(x=>x.StringID.StartsWith('C'))
.Skip((pageNumber-1)*perPage).Take(perPage);
如果您知道数据源返回有序结果,则可以使用SkipUntil()来查找Cs,但是您将遍历大量记录,并且很多Linq提供者可以翻译Skip和Take但不能SkipWhile,SkipUntil等