在上一篇博文中,我們介紹了如何使用SharePoint服務器上的業務連接服務對 象模型連接到BCS服務元數據存儲,來獲取一個企業核心業務系統對象、外部內容 類型及其方法,以及如何執行一個外部內容類型的方法。
本文將演示如何執行一個帶有篩選器定義的外部內容類型的Finder方法。
步驟
1、使用SharePoint Designer 2010創建一個新的外部內容類型,使用 AdventureWorks2000數據庫的Employees表。 為該ECT在First Name一欄上設置一 個篩選器。
請注意,我們選中了復選框“如果為以下值,則忽略篩選器”。
2、打開Visual Studio 2010並從SharePoint2010項目分類中選擇新建一個“ 可視 Web 部件”項目。
3、在該webpart用戶控件的設計模式下,添加一些文字“First Name:”。然 後拖放一個文本框和一個按鈕。設置文本框的ID為FirstNameTextbox,按鈕的ID 為SearchButton。最後,添加一個GridView。完成後的界面如下圖:
4、我們需要添加一個引用到Microsoft.BusinessData.dll,在解決方案資源 管理器中右擊“引用”文件夾,選擇“添加引用”。 浏覽到該dll:
c:\program files\common files\microsoft shared\web server extensions\14\ISAPI\Microsoft.BusinessData.dll
5、打開用戶控件—— VisualWebPart1UserControl.ascx.cs,添加下列using 語句:
using Microsoft.SharePoint;
using Microsoft.SharePoint.BusinessData.SharedService;
using Microsoft.BusinessData.MetadataModel;
using Microsoft.SharePoint.Administration;
using Microsoft.BusinessData.Runtime;
using Microsoft.SharePoint.BusinessData.Runtime;
6、添加下列方法:
private void executeFilterMethod()
{
//獲取實體的目錄以便開始我們的工作
BdcService service = SPFarm.Local.Services.GetValue<BdcService>();
IMetadataCatalog catalog = service.GetDatabaseBackedMetadataCatalog(SPServiceContext.Current);
//獲取Employee外部內容類型
IEntity entity = catalog.GetEntity("http://contoso14", "Employee");
//獲得默認的Finder方法的篩選器
IFilterCollection filters = entity.GetDefaultFinderFilters();
//如果FirstNameTextBox有值則設置篩選器值
if (FirstNameTextBox.Text != string.Empty)
{
WildcardFilter filter = (WildcardFilter)filters [0];
filter.Value = FirstNameTextBox.Text;
}
//通過默認的Finder方法返回篩選後的數據
IEntityInstanceEnumerator enumerator = entity.FindFiltered(filters, entity.GetLobSystem ().GetLobSystemInstances()[0].Value);
DataTable table = null;
//循環遍歷返回的數據
while (enumerator.MoveNext())
{
//第一次時設置數據表,以後直接添加行
if (table == null)
table = enumerator.Current.EntityAsDataTable;
else
table.ImportRow (enumerator.Current.EntityAsDataTable.Rows[0]);
}
//綁定數據到我們的GridView
GridView1.DataSource = table;
GridView1.DataBind();
}
7、雙擊我們用戶控件上的按鈕,添加一個點擊事件處理程序,內容很簡單, 直接調用上面的方法即可:
protected void SearchButton_Click(object sender, EventArgs e)
{
executeFilterMethod();
}
8、所有的代碼工作都完成了,現在我們可以按F5鍵運行了。Visual Studio會 幫我們打成wsp包並部署到我們的網站。
當 SharePoint打開後,進入頁面編輯模式,插入一個webpart。我們的 VisualWebPart1位於Custom分組下。添加好後,點擊 Button按鈕,你將會從 Employee外部內容類型返回所有的數據,或者也可以輸入一個first name比如 Linda,就會返回符合條件的結果:
在接下來的文章中,我們會進一步介紹bcs的對象模型。