http://lightningtools.com/bcs/sharepoint-2010-external-list-paging-server-side/

When you are using an External List to display data through the Business Connectivity Services from your External Data Source you do not want to be bringing back thousands of records of data. This is a bad setup in terms of performance hit on the hardware and also experience of the end user as they may only want 20 records displayed at a time, so no need to bring them all over. What we need to do is allow an External List to page through the data, executing a query on the External Data Source so only the current records required for what the user wants to review are returned. This is known as server side paging.

In this walkthrough we’ll show you how to configure a BCS finder method to provide custom paging. We will use BCS Meta Man to create an external content type and configure the finder method to provide custom paging ability.

1) Launch Visual Studio 2010 and create a new empty SharePoint project. Add a BCS Meta Man project item from the Lightning Tools project items group. Connect to your database(we have used AdventureWorks2000 database in this walkthrough) by using the main menu BCS Meta Man –> BCS Meta Man Data Explorer and connect to your database you wish to use. It should looked like this

[Please click the images for a larger view]

2) Drag and drop a table from the data source explorer on to design surface. Choose .Net Assembly as a model type.

3) Now we need to create two filters. The first one will keep information about the records count per page, and the second one will keep information about the start row. Using these values we can support custom paging. Right click on the external content type, and choose “Manage Entity”

4) Navigate to the Methods tab and select the finder method. Click on the Add Filter button. We will create a filter for records count per page. Set 30 as a default value.

5) Create another filter for first row number, using the same way that is described in step 4. We need to use a nullable type column for that filter because later when we will try to retrieve first row number information from the external list, we will see that value is null for the first page, so to avoid exceptions we need to create this filter on a nullabe type column. We have used SalesPersonId column of the Customer table. Set 1 as a default value.

6) Now we need to make a small modification to the C# code that is generated for our Finder method. To support custom paging, each time we need to retrieve (N*C+1) records, where N is the page number, C is records count per page, and we need to add 1 extra row so that SharePoint knows it can page. So for example if you want first 30 records and paging enabled, you need to retrieve 31 records. When the Next/Page button is clicked, it should retrieve 61 records but the start row number set to 31. We need to modify the finder method code, and it should looked like this.

7) Now you can press F5 to deploy the solution, go to SharePoint site and create a new external list based on the deployed external content type. When list is created, go and modify the view.

8) On the Edit List View page scroll down and you’ll find the place to set values for the filters that we created in step 4 and 5. You need to set {dvt_firstrow} as the value for RowNumber filter. {dvt_firstrow} is an argument value that is being posted by an external list when you click on next/previous buttons. It holds the value of the first row number of an external list. So if you click on next button and it navigates to the second page which contains the second 30 records, {dvt_firstrow} will be equal to 31. Here is the screenshot of that post back.

9) For the RecordsCount filter value, you should set this to be the same value that is specified in your external list’s Items Limit section. Using this value it should retrieve the next bunch of records. In Edit View, if you go to Items Limit section you’ll see 30 as the default value. Lets change it to 10.

10) Finally here is the screenshot of the values of our defined BCS filters.

So, when we have dvt_firstrow and RecordsCount values we can calculate the value of N = dvt_firstrow/RecordsCount+1. For example, if our page contains 10 records, and dvt_firstrow = 21(which means that it should show records from 21 to 30), then N=21/10+1 which is equal to 3. So, N*C+1 = 3*10+1=31. So it will retrieve 31 records and external list will show records from 21 to 30.

Using this technique we can provide custom paging of our external content list .

SharePoint 2010 External List Paging – Server Side的更多相关文章

  1. Upgrade from SharePoint 2010 to SharePoint 2016

    [转]http://nikcharlebois.com/upgrade-from-sharepoint-2010-to-sharepoint-2016/ In this blog, I will go ...

  2. SharePoint 2010在win7 x64 安装

    转:http://kaneboy.blog.51cto.com/1308893/328000 关于<SharePoint 2010应用程序开发指南>,我和杜伟同学正在撰写中,希望下半年早点 ...

  3. Integrate SharePoint 2013 with Team Foundation Server 2012

    Now that SharePoint 2013 is out I want to make sure that I can integrate SharePoint 2013 with Team F ...

  4. 【SharePoint 2010】SharePoint 2010开发方面的课堂中整理有关问题

    SharePoint 2010开发方面的课堂中整理有关问题陈希章 ares@xizhang.com1. 对于SharePoint的体系结构不甚清楚,觉得有点乱了解了就不会觉得乱了,请理解1) 场服务 ...

  5. SharePoint 2010开发方面的课堂中整理有关问题

    SharePoint 2010开发方面的课堂中整理有关问题 这是我这几天在做一个SharePoint开发的课程的时候,大家提出的一些问题,及我的解答,分享给更多的朋友参考一下 这个文档,也可以在这里下 ...

  6. 分享微软官方Demo用的SharePoint 2010, Exchange 2010, Lync 2010虚拟机

    微软官方有一套专门用于SharePoint 2010, Exchange 2010 Demo的虚拟机:SharePoint 2010: Information Worker Demonstration ...

  7. Searching External Data in SharePoint 2010 Using Business Connectivity Services

    from:http://blogs.msdn.com/b/ericwhite/archive/2010/04/28/searching-external-data-in-sharepoint-2010 ...

  8. How to tune SharePoint 2010 Server for better performance?

    http://social.technet.microsoft.com/wiki/contents/articles/7926.sharepoint-2010-tips-for-dealing-wit ...

  9. 自定义和扩展 SharePoint 2010 Server 功能区

    了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...

随机推荐

  1. Android应用安全之Android APP通用型拒绝服务漏洞

    0xr0ot和Xbalien交流所有可能导致应用拒绝服务的异常类型时,发现了一处通用的本地拒绝服务漏洞.该通用型本地拒绝服务可以造成大面积的app拒绝服务. 针对序列化对象而出现的拒绝服务主要是由于应 ...

  2. C# 读取压缩文件方式及乱码处理

    目前主流的压缩文件操作类,除了C#原生的.还有 1. ZIP-DotNetZip 网址:http://dotnetzip.codeplex.com/ 2 7Zip-SevenZipSharp 网址:h ...

  3. vs2010设置

    解决方案管理器文件自动定位:工具--选项--项目和解决方案--常规--在解决方案资源管理器中跟踪活动项(前打勾). VAssistX拼写错误的下划波浪线去掉:在VAssistX菜单栏->Visu ...

  4. 从零开始Grunt

    [20141025]从0开始Grunt *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom ...

  5. Vim杂记:markdown插件

    一.安装插件 从以下地址下载压缩包 github下载:https://github.com/plasticboy/vim-markdown plasticboy下载:http://plasticboy ...

  6. Ioc原理及常用框架

    1 IoC理论的背景    我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑.  图1:软件系统中耦合的对象 如果我们 ...

  7. IOS开发中设置控件内容对齐方式时容易混淆的几个属性

    IOS开发中四个容易混淆的属性: 1. textAligment : 文字的水平方向的对齐方式 1> 取值 NSTextAlignmentLeft      = 0,    // 左对齐 NST ...

  8. TreeSet与TreeMap浅解

    TreeSet与TreeMap的关系: 1.TreeSet 实际上就是用TreeMap来组织数据的,因为在TreeSet中保存了一个NavigableMap<e,Object>接口实例变量 ...

  9. 暴力 + 贪心 --- Codeforces 558C : Amr and Chemistry

    C. Amr and Chemistry Problem's Link: http://codeforces.com/problemset/problem/558/C Mean: 给出n个数,让你通过 ...

  10. 使用openssl生成RSA公私密钥

    在windows 环境下 1.进入cmd命令窗口 切换到openssl程序目录下 2.输入openssl.exe,进入openssl命令模式下 3.生成私钥输入“genrsa -out app_pri ...