原文:http://msdn2.microsoft.com/en-us/library/bb466219.aspx 在我们添加一个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做数据源,是不是很酷? 查看视频 |
|
来自: cz0007 > 《SPGRIDVIEW》