一步步教你在SharePoint站点创建具有分页、排序、筛选功能的SPGridView Web部件
介绍
SharePoint有一个内置gridview控件,即SPGridView控件。当与一个ObjectDataSources共同使用时,内置支持排序、筛选功能;并且如果SPGridView控件被使用,外观会很相似。这也是SPGridView使用超过ASP.NET GridView控件的原因。
下面是本样本提供的功能:
1. 创建SPGridView Web部件;
2. 分页的不同模型;
3. 排序;
4. 筛选。
这是本文最重要达成的目标:
如何使用代码
解压缩源代码SPGridViewWebpart,解决方案包括:
1. SPGridViewWebpartClass.cs:包含SPGridview(可分页排序和筛选)的Web部件。
2. DataTableWrapper.cs:ObjectDataSource,返回DataRow。为了返回一个Datatable并与这个数据表绑定SPGridView,这个类像一个包装器。
3. SmartPager.cs:分页模型。
4. XofYPager.cs:分页模型。
生成这个解决方案,并在GAC中不熟DLL,并添加Web部件到SharePoint站点。
步骤如下。
创建Web部件
1.以管理员身份打开VS,新建项目,选择类库模板。
2. 右击引用选择添加引用。
3. 从.NET中选择Windows SharePoint Services和System.Web,点击确定。
4. 添加所有类文件。即SPGridViewWebpartClass.cs,DataTableWrapper.cs,DataTableWrapper.cs和XofYPager.cs文件到项目中。
在运行时创建Datatable
创建带有列Title、Status、Description的Datatable并填充数据。这里填充一些样本数据表如TitleA,StatusA,DescriptionA等等。
分页
在gridview控件中启用分页,并定义页面大小为5.
不同类型的分页显示
使用下面任何一个分页模型,并注释掉其他模型的代码。
默认分页
我们假设总共50条记录,然后显示方式:1 2 3 4 5 6 7 8 9 10.
第一个分页模型
第一页显示1 of 10,第二页显示2 of 10等。
第二个分页模型
第三个分页模型
排序代码
在girdview控件中启用排序。排序在DataTable的所有列上启用,即Title、Status和Description。
筛选代码
筛选在DataTable的所有列上启用,即Title、Status和Description。
部署Web部件
1. 创建Strong name key。
a. 右击Web部件项目,进入属性。
b. 选择singing选项卡。
c. 选中Sign the assembly复选框。
d. 从下拉列表中选择新建,创建Strong Name Key窗口打开。
e. 清除“Protect my Keyfile with a password”,在“Key File Name”文本框中输入名称,点击确定。
参考下面截图:
2. 生成解决方案。
3. 在GAC中拖拽放置Web部件DLL(开始中输入assembly,运行直接打开Assembly文件夹)。
4. 添加Safe Control tag到SharePoint Installation Drive\Inetpub\wwwroot\wss\VirtualDirectories\[Site Port No.]\web.config这个路径的web.config文件。
注意:两种方式获得Public Key Token:
1. 从Assembly文件夹,右击DLL,进入属性复制Public Key Token值。
2. 使用Lutz Reflector。
5. 执行iisreset。
添加Web部件到Web部件库
1. 导航到网站。
2. 网站操作--网站设置--Web部件--Web部件库。
3. 点击新建按钮。从列表中选择部署的Web部件,点击Populated Gallery按钮。
4. 如果We部件已经存在,选中“如果文件存在则覆盖”复选框,点击“Populated Gallery”按钮。
在站点首页使用Web部件
1. 导航到站点首页。
2. 网站操作--编辑页面。
3. 点击“添加Web部件”。
4. 在Miscellaneous部分,选择之前部署的Web部件,点击“添加”按钮。
5. 点击退出编辑模式。
现在SPGridView Web部件显示出来,具有分页、排序和筛选功能。和SharePoint站点外观相似。因此不使用ASP.NET GridView控件,而是用SPGridView控件。
调试Web部件