MSDN Visual系列:用WSSv3中的SPGridView控件来显示数据
原文:http://msdn2.microsoft.com/en-us/library/bb466219.aspx
开发ASP.NET应用时,通常需要显示行列格式的表格类型数据。尽管我们可以通过程序创建一个HTML表格来实现该需求,但不如使用ASP.NET 2.0中GridView这样的服务器端控件来得更便捷。在WSS平台中同样也提供了一个SPGridView控件,从ASP.NET GridView控件继承而来。该控件为我们在SharePoint开发中显示表格型数据提供了很大的便利。
在我们添加一个SPGridView控件到一个自定义页面中之前,我们首先必须通过@Register在页面顶部添加一个指向Microsoft.SharePoint.dll的注册,并引用Microsoft.SharePoint.WebControls命名空间。
Tagprefix="SharePoint"
Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, [4-part assembly name] " %>
完成@Register注册部分编写后,我们就可以在应用程序页面中创建SPGridView控件的标记了。注意,标记前必须加上注册时指定的前缀。
runat="server"
ID="grdPropertyValues"
AutoGenerateColumns="false"
RowStyle-BackColor="#DDDDDD"
AlternatingRowStyle-BackColor="#EEEEEE" />
与其他ASP.NET中的Grid控件不同,SPGridView控件并不支持自动生成栏。如果你不指定AutoGenerateColumns属性为"false", 将会得到一个运行时错误。
用SPGridView控件显示一个ADO.NET的DataTable
填充一个SPGridView控件最简单的办法就是创建一个ADO.NET DataTable。因为我们可以将DataTable的DefaultView属性指定到SPGridView控件的DataSource上作为SPGridView的数据源,然后直接调用DataBind方法即可。
下面的示例展示了一个名为PropertyCollectionBinder的工具类,通过这个类包装了以下工作:创建并显示一个具有两栏数据的ADO.NET DataTable。同时,这个类还提供一个很有用的方法BindGird,接受一个SPGridView控件做参数,并会调用其数据绑定方法来展示ADO.NET DataTable的数据。
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
public class PropertyCollectionBinder {
protected DataTable PropertyCollection = new DataTable();
public PropertyCollectionBinder() {
PropertyCollection.Columns.Add("PropertyName", typeof(string));
PropertyCollection.Columns.Add("PropertyValue", typeof(string));
}
public void AddProperty(string PropertyName, string PropertyValue) {
DataRow newRow = PropertyCollection.Rows.Add();
newRow["PropertyName"] = PropertyName;
newRow["PropertyValue"] = PropertyValue;
}
public void BindGrid(SPGridView grid) {
SPBoundField fldPropertyName = new SPBoundField();
fldPropertyName.HeaderText = "Property Name";
fldPropertyName.DataField = "PropertyName";
grid.Columns.Add(fldPropertyName);
SPBoundField fldPropertyValue = new SPBoundField();
fldPropertyValue.HeaderText = "Value";
fldPropertyValue.DataField = "PropertyValue";
grid.Columns.Add(fldPropertyValue);
grid.DataSource = PropertyCollection.DefaultView;
grid.DataBind();
}
}
用PropertyCollectionBinder 来绑定数据
这样我们就可以通过在自定义页面的后台代码中使用PropertyCollectionBinder类来简化用SPGridView控件显示一系列名/值对的过程。下面给出一个这样的例子,通过SPGridView来显示调用WSS对象模型得到的一些属性值。
SPWeb site = this.Web;
PropertyCollectionBinder pcb = new PropertyCollectionBinder();
pcb.AddProperty("Site Title", site.Title);
pcb.AddProperty("Site ID", site.ID.ToString().ToUpper());
pcb.AddProperty("Current User Name", site.CurrentUser.Name);
pcb.BindGrid(grdPropertyValues);
在基于SharePoint的解决方案中使用SPGridView控件还有一个好处,就是该控件已经集成了WSSv3的样式。同样,在SharePoint的标准后台页面和WebPart中也大量使用了该控件。这就是说,在SharePoint中我们的自定义应用程序和WebPart,都可以使用SPGridView控件,并且可以获得与标准的SharePoint界面相同的外观。
SPGridView控件不支持自动生成栏,所以我们必须明确的使用SPBoundField来绑定每个栏,正如上面的例子所写的那样。然而,产生用于展示的数据确并不困难。我们可以创建一个ADO.NET DataTable或者通过使用query类型的对象返回一个DataTable,例如使用SPSiteDataQuery对象进行一个在网站集范围内的跨多个列表的查询,并将返回的DataTable指定给SPGridView做数据源,是不是很酷?
查看视频
MSDN Visual系列:用WSSv3中的SPGridView控件来显示数据相关推荐
- C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上...
转:/********************** * 课题:将窗体中鼠标所在控件名显示在窗体标题上 * 作者:ZAXX * QQ : 94027486 * 本课题可简单扩展:获取屏幕上鼠标所在 ...
- VFP中使用winsock控件收发二进制数据
VFP中使用winsock控件收发网络数据时,如果包含有二进制数据,总是会丢失,或者与实际数据不符,这是由于字符转换的问题引起的. vfp的字符串本质与二进制数据没有任何区别,而所有的OCX控件和CO ...
- c 窗体中添加mysql控件,MYSQL 统计数据-svn服务器启动-WinFrom控件库|.net开源控件库|HZHControls官网...
统计数据的重要性相信了解ORACLE数据库的都非常清楚,他是生成执行计划的唯一标准,所以统计数据是否准确直接影响到执行计划的正确性, 关于MYSQL虽然没有ORACLE那么多维度的统计数据(比如直方图 ...
- android中seekbar 常用属性列表,随笔–android中修改SeekBar控件默认显示-Fun言
布局文件中相关代码如下: android:id="@+id/seekbar" android:layout_width="match_parent" andro ...
- Ionic2中集成第三方控件Sweetalert
Ionic2混合开发,入坑系列:Ionic2中集成第三方控件Sweetalert 注:Sweetalert2已经可以直接从npm中下载安装 npm install --save sweetalert2 ...
- 在RelativeLayout中对控件的显示隐藏操作问题
2019独角兽企业重金招聘Python工程师标准>>> 通常我们通过java代码控制布局中,某个控件的显示与隐藏会用: progressBar_video_format.setVis ...
- 转:MSDN Visual系列:MOSS企业级搜索之一——在搜索中心里创建自定义搜索页面和标签选项卡...
MSDN Visual系列:MOSS企业级搜索之一--在搜索中心里创建自定义搜索页面和标签选项卡 原文:http://msdn2.microsoft.com/en-us/library/bb42885 ...
- ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件
本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档.<?XML:NAME ...
- 一步一步学Silverlight 2系列(9):使用控件模板
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://terrylee.blog.51cto.com/342737/67243 ...
- 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件
适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...
最新文章
- 学习笔记第三十四节课
- python模块之pickle
- 在Tomcat上挂载预下载文件的方法
- 2003 IIS搭建与配置
- 安装VMware Tools 灰色解决办法
- 将Mac OS X从Snow Leopard升级到Mountain Lion
- Java核心面试问题
- 英语笔记:词组句子:0906
- C语言课后习题(32)
- 研磨设计模式之 工厂方法模式-3
- 【转】 CSS3实现10种Loading效果
- 学习完windows网络编程第一章后做的UDPTest程序
- 【虚拟机】关于 virtualbox 和 vmware workstation 对比的个人见解
- 从CUBIC/BBR的TCP ACK失速说起
- 《电磁学》学习笔记1——电场
- 【渝粤题库】陕西师范大学164210 冲突与沟通管理 作业 (专升本)
- 中国顶级富豪沉浮录:财富常青树之谜与大败局规律
- 字符串匹配——朴素算法Brute-Force(布鲁特-福斯算法)
- 基于python的语料库数据处理_基于Python的语料库数据处理(三)
- C++ —— 类的使用
热门文章
- c语言二级笔试试卷,二级C语言笔试试卷
- java中ping多个ip_在Java中ping多个服务器
- onfigure: error: cannot find install-sh, install.sh, or shtool in
- 类似构建的操作性工作,可以轮流值班
- relocation R_X86_64_PC32 against symbol can not be used when making a shared object recompile with
- 同是共享内存,shm_open与shmget有什么差异?
- 挖空的煤矿能否储存石油
- 电子设备的节能分析与设计
- c++核心编程第一部分讲义_java并发编程实战-第一部分总结
- 计算机桌面组成部分教案,三年级信息技术第五课设置个性桌面教学设计