原文: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命名空间。

<%@ Register 
  Tagprefix="SharePoint" 
  Namespace="Microsoft.SharePoint.WebControls" 
  Assembly="Microsoft.SharePoint, [4-part assembly name] " %>

完成@Register注册部分编写后,我们就可以在应用程序页面中创建SPGridView控件的标记了。注意,标记前必须加上注册时指定的前缀。

<SharePoint: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 System.Data;
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对象模型得到的一些属性值。

SPSite siteCollection = this.Site;
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控件来显示数据相关推荐

  1. C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上...

    转:/********************** * 课题:将窗体中鼠标所在控件名显示在窗体标题上  * 作者:ZAXX  * QQ : 94027486  * 本课题可简单扩展:获取屏幕上鼠标所在 ...

  2. VFP中使用winsock控件收发二进制数据

    VFP中使用winsock控件收发网络数据时,如果包含有二进制数据,总是会丢失,或者与实际数据不符,这是由于字符转换的问题引起的. vfp的字符串本质与二进制数据没有任何区别,而所有的OCX控件和CO ...

  3. c 窗体中添加mysql控件,MYSQL 统计数据-svn服务器启动-WinFrom控件库|.net开源控件库|HZHControls官网...

    统计数据的重要性相信了解ORACLE数据库的都非常清楚,他是生成执行计划的唯一标准,所以统计数据是否准确直接影响到执行计划的正确性, 关于MYSQL虽然没有ORACLE那么多维度的统计数据(比如直方图 ...

  4. android中seekbar 常用属性列表,随笔–android中修改SeekBar控件默认显示-Fun言

    布局文件中相关代码如下: android:id="@+id/seekbar" android:layout_width="match_parent" andro ...

  5. Ionic2中集成第三方控件Sweetalert

    Ionic2混合开发,入坑系列:Ionic2中集成第三方控件Sweetalert 注:Sweetalert2已经可以直接从npm中下载安装 npm install --save sweetalert2 ...

  6. 在RelativeLayout中对控件的显示隐藏操作问题

    2019独角兽企业重金招聘Python工程师标准>>> 通常我们通过java代码控制布局中,某个控件的显示与隐藏会用: progressBar_video_format.setVis ...

  7. 转:MSDN Visual系列:MOSS企业级搜索之一——在搜索中心里创建自定义搜索页面和标签选项卡...

    MSDN Visual系列:MOSS企业级搜索之一--在搜索中心里创建自定义搜索页面和标签选项卡 原文:http://msdn2.microsoft.com/en-us/library/bb42885 ...

  8. ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件

    本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档.<?XML:NAME ...

  9. 一步一步学Silverlight 2系列(9):使用控件模板

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://terrylee.blog.51cto.com/342737/67243 ...

  10. 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件

    适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...

最新文章

  1. 学习笔记第三十四节课
  2. python模块之pickle
  3. 在Tomcat上挂载预下载文件的方法
  4. 2003 IIS搭建与配置
  5. 安装VMware Tools 灰色解决办法
  6. 将Mac OS X从Snow Leopard升级到Mountain Lion
  7. Java核心面试问题
  8. 英语笔记:词组句子:0906
  9. C语言课后习题(32)
  10. 研磨设计模式之 工厂方法模式-3
  11. 【转】 CSS3实现10种Loading效果
  12. 学习完windows网络编程第一章后做的UDPTest程序
  13. 【虚拟机】关于 virtualbox 和 vmware workstation 对比的个人见解
  14. 从CUBIC/BBR的TCP ACK失速说起
  15. 《电磁学》学习笔记1——电场
  16. 【渝粤题库】陕西师范大学164210 冲突与沟通管理 作业 (专升本)
  17. 中国顶级富豪沉浮录:财富常青树之谜与大败局规律
  18. 字符串匹配——朴素算法Brute-Force(布鲁特-福斯算法)
  19. 基于python的语料库数据处理_基于Python的语料库数据处理(三)
  20. C++ —— 类的使用

热门文章

  1. c语言二级笔试试卷,二级C语言笔试试卷
  2. java中ping多个ip_在Java中ping多个服务器
  3. onfigure: error: cannot find install-sh, install.sh, or shtool in
  4. 类似构建的操作性工作,可以轮流值班
  5. relocation R_X86_64_PC32 against symbol can not be used when making a shared object recompile with
  6. 同是共享内存,shm_open与shmget有什么差异?
  7. 挖空的煤矿能否储存石油
  8. 电子设备的节能分析与设计
  9. c++核心编程第一部分讲义_java并发编程实战-第一部分总结
  10. 计算机桌面组成部分教案,三年级信息技术第五课设置个性桌面教学设计