代码段:确定关联筛选器的参数的类型

上次修改时间: 2010年5月6日

适用范围: SharePoint Server 2010

本文内容
说明
必备组件
使用该示例

说明

以下代码示例演示如何使用 BDC 对象模型获取与筛选器关联的参数的类型。

如果您希望在客户端订阅文件中提供筛选器类型,此代码示例尤其有用。外部列表视图的 view.xml 具有一个 <Method> 标记,它显示所连接的查找工具方法。在该标记下有描述筛选器信息的筛选器标记。您可以使用以下代码示例(从 view.xml 给定方法和筛选器名称)来确定与筛选器关联的参数类型。

必备组件

  • 服务器上安装了 Microsoft SharePoint Server 2010 或 Microsoft SharePoint Foundation 2010。

  • 客户端计算机上安装了 Microsoft Office 2010 和 Microsoft .NET Framework 3.5。

  • Microsoft Visual Studio。

  • 至少一个解决方案部署到 BCS 客户端缓存。

使用该示例

  1. 在客户端计算机上启动 Visual Studio,然后创建 C# Office 应用程序加载项项目。在创建项目时,选择".NET Framework 3.5"。

  2. 从"视图"菜单中,单击"属性页"以显示项目属性。

  3. 在"生成"选项卡中,为"目标平台"选择"任何 CPU"。

  4. 关闭项目属性窗口。

  5. 在"解决方案资源管理器"中的"引用"下,移除除 System 和 System.Core 之外的所有项目引用。

  6. 将以下引用添加到项目中:

    1. Microsoft.Office.BusinessApplications.Runtime

    2. Microsoft.BusinessData

      System.Windows.Forms

  7. 用以下语句替换现有 using 语句。

    using System;
    using Microsoft.BusinessData.MetadataModel;
    using Microsoft.Office.BusinessData.MetadataModel;
    using Microsoft.BusinessData.Runtime;
    using System.Windows.Forms;
    
  8. 用此过程末尾列出的代码替换加载项的启动事件中的代码。

  9. 用有效值替换 nameSpace、entityName、methodName 和 filterName 的值。

  10. 保存该项目。

  11. 编译并运行该项目。

 RemoteSharedFileBackedMetadataCatalog remoteCatalog = new RemoteSharedFileBackedMetadataCatalog();
 IEntity entity = remoteCatalog.GetEntity("<nameSpace>", "<entityName>");
 string methodName = <methodName>; // Name of the method from view.xml 
 string filterName = <filterName>; // Name of the filter from view.xml

IMethodInstance mi = entity.GetMethodInstance(methodName, MethodInstanceType.Finder);
IFilterCollection viewFilters = mi.GetFilters();
IUserInputFilter filter = entity.Catalog.Helper.GetUserInputFilterByName(viewFilters, filterName);
Type filterType = filter.GetValueType();
MessageBox.Show(filterType.ToString());

请参阅

引用

RemoteSharedFileBackedMetadataCatalog

GetEntity(String, String)

IEntity

GetMethodInstance(String, MethodInstanceType)

IMethodInstance

GetFilters()

IFilterCollection

IUserInputFilter

GetValueType()