通过BCS对象模型使用筛选器

在上一篇博文中,我们介绍了如何使用SharePoint服务器上的业务连接服务对象模型连接到BCS服务元数据存储,来获取一个企业核心业务系统对象、外部内容类型及其方法,以及如何执行一个外部内容类型的方法。

在C#代码中执行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的对象模型。

 

参考资料

using filters and the business connectivity services object model 

Creating a web service to access BCS data in SharePoint 2010 

转载于:https://www.cnblogs.com/Sunmoonfire/archive/2010/07/07/1769397.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值