|
原文:http://msdn2.microsoft.com/en-us/library/bb466219.aspx 在我們添加一個(gè)SPGridView控件到一個(gè)自定義頁(yè)面中之前,我們首先必須通過(guò)@Register在頁(yè)面頂部添加一個(gè)指向Microsoft.SharePoint.dll的注冊(cè),并引用Microsoft.SharePoint.WebControls命名空間。 <%@ Register
Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, [4-part assembly name] " %> 完成@Register注冊(cè)部分編寫(xiě)后,我們就可以在應(yīng)用程序頁(yè)面中創(chuàng)建SPGridView控件的標(biāo)記了。注意,標(biāo)記前必須加上注冊(cè)時(shí)指定的前綴。 <SharePoint:SPGridView
runat="server" ID="grdPropertyValues" AutoGenerateColumns="false" RowStyle-BackColor="#DDDDDD" AlternatingRowStyle-BackColor="#EEEEEE" /> 與其他ASP.NET中的Grid控件不同,SPGridView控件并不支持自動(dòng)生成欄。如果你不指定AutoGenerateColumns屬性為"false", 將會(huì)得到一個(gè)運(yùn)行時(shí)錯(cuò)誤。 用SPGridView控件顯示一個(gè)ADO.NET的DataTable 填充一個(gè)SPGridView控件最簡(jiǎn)單的辦法就是創(chuàng)建一個(gè)ADO.NET DataTable。因?yàn)槲覀兛梢詫ataTable的DefaultView屬性指定到SPGridView控件的DataSource上作為SPGridView的數(shù)據(jù)源,然后直接調(diào)用DataBind方法即可。 下面的示例展示了一個(gè)名為PropertyCollectionBinder的工具類,通過(guò)這個(gè)類包裝了以下工作:創(chuàng)建并顯示一個(gè)具有兩欄數(shù)據(jù)的ADO.NET DataTable。同時(shí),這個(gè)類還提供一個(gè)很有用的方法BindGird,接受一個(gè)SPGridView控件做參數(shù),并會(huì)調(diào)用其數(shù)據(jù)綁定方法來(lái)展示ADO.NET DataTable的數(shù)據(jù)。 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 來(lái)綁定數(shù)據(jù) 這樣我們就可以通過(guò)在自定義頁(yè)面的后臺(tái)代碼中使用PropertyCollectionBinder類來(lái)簡(jiǎn)化用SPGridView控件顯示一系列名/值對(duì)的過(guò)程。下面給出一個(gè)這樣的例子,通過(guò)SPGridView來(lái)顯示調(diào)用WSS對(duì)象模型得到的一些屬性值。 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控件還有一個(gè)好處,就是該控件已經(jīng)集成了WSSv3的樣式。同樣,在SharePoint的標(biāo)準(zhǔn)后臺(tái)頁(yè)面和WebPart中也大量使用了該控件。這就是說(shuō),在SharePoint中我們的自定義應(yīng)用程序和WebPart,都可以使用SPGridView控件,并且可以獲得與標(biāo)準(zhǔn)的SharePoint界面相同的外觀。 SPGridView控件不支持自動(dòng)生成欄,所以我們必須明確的使用SPBoundField來(lái)綁定每個(gè)欄,正如上面的例子所寫(xiě)的那樣。然而,產(chǎn)生用于展示的數(shù)據(jù)確并不困難。我們可以創(chuàng)建一個(gè)ADO.NET DataTable或者通過(guò)使用query類型的對(duì)象返回一個(gè)DataTable,例如使用SPSiteDataQuery對(duì)象進(jìn)行一個(gè)在網(wǎng)站集范圍內(nèi)的跨多個(gè)列表的查詢,并將返回的DataTable指定給SPGridView做數(shù)據(jù)源,是不是很酷? 查看視頻 |
|
|
來(lái)自: cz0007 > 《SPGRIDVIEW》