• 通过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 

  • 相关阅读:
    Direct3D轮回:游戏场景之天空
    Direct3D轮回:游戏特效之晴天光晕
    Direct3D轮回:基于.X文件的网格加载及渲染
    Direct3D轮回:游戏特效之风动、雾化
    Direct3D轮回:游戏场景之陆地
    Direct3D轮回:基于ID3DXSprite的2D元素绘制
    Direct3D轮回:基于HLSL实现D3D中的光照特效
    Direct3D轮回:构建基于Direct3D的通用摄影机类
    Direct3D轮回:构建基于DirectInput机制的键盘输入设备
    剪切上传图片源码
  • 原文地址:https://www.cnblogs.com/Sunmoonfire/p/1769397.html
Copyright © 2020-2023  润新知