如何在自定义SSIS数据流组件中使用复选框列表来定制属性?

时间:2011-10-31 15:12:56

标签: c# ssis

我认为问题的标题说明了一切。我正在为SSIS开发自定义数据流组件。我想使用一个复选框列表,它从集合中获取它的值(列表,枚举,......并不重要),并让用户可以检查几个选项。 然后我想将这些作为我的SSIS组件中的列表... 有人知道如何做到这一点吗?

更新

例如,我有一个包含{a,b,c,d}的列表。 (让我们说它是硬编码的,虽然在实践中我会从数据库中提取记录)。

我想给用户一个复选框,例如他可以从上面的列表中查看a和c。

然后我的组件中的属性现在包含:{a,c}。

澄清

我有一个字符串列表。在我的UI(如果可能的话,高级编辑器)中,我想构建一个组合框,其中的选项是列表中的字符串。

该组件具有字符串属性。一旦用户从组合框中做出选择,就会构建一个包含选项的逗号分隔字符串并将其传递给组件并存储在字符串属性中。

我需要知道的是:

  • 如何在高级编辑器中构建组合框(如果可能) 在字符串列表?
  • 如何将UI中的值返回到组件 建立我的字符串?

1 个答案:

答案 0 :(得分:2)

让我先回答第一个问题:

  • 据我所知,无法通过高级编辑器执行此操作,因为您无法在其中托管自定义UI控件;或者至少我不知道如何做到这一点
  • 注意我写了“自定义”,因为你要求组合框具有多个选择,并且这种控制在.NET中不可用;但如果你愿意的话,互联网上有很多关于如何创建这种控制的信息

这意味着你必须develop UI form for Your component。回答您的两个问题您需要查看本文的以下部分:

  • 数据流组件的设计时方法 - 了解如何向组件添加自定义属性 - 您必须覆盖ProvideComponentProperties方法
  • 为数据流组件开发用户界面 - 了解如何为组件创建自定义UI;您需要2个类:UI类(在您的组件中注册)和UI表单,它是从UI类实例化和使用的;注意示例(btnOK_Click处理程序)它显示了如何使用SetCustomProperty方法将属性值从UI保存到组件本身
  • 验证数据流组件 - 检查验证实现以了解如何从组件访问属性 - 使用组件元数据的CustomPropertyCollection

澄清将属性值从组件传递到UI并返回:

  • 组件中的ProvideComponentProperties告诉SSIS组件具有哪些属性
  • 当用户在打开包后首次打开组件UI时,SSIS实例化UI类并调用Initialize实例方法并将ComponentMetadata作为参数传递
  • 当用户启动组件UI的打开时,SSIS调用先前创建的UI类实例的Edit方法,并将父窗口句柄,包变量和包连接作为参数传递
  • 这是Edit方法,你应该调用表单的构造函数并显示它 - UI类非常简单,你可以在上面提到的MSDN文章中看到
  • 表单构造函数必须具有参数:包连接,包变量和组件元数据
  • 一旦用户在您的表单上单击“确定”,您就可以使用组件元数据SetCustomProperty方法将属性设置为适当的值(在您的情况下为连接列表)
  • 读取组件代码(不是UI)中的属性值使用组件元数据对象的CustomPropertyCollection

还有一件事:既然您将为组件创建UI,请考虑使用已经随.NET框架提供的Checked ListBox,而不是创建自定义组件。

提供的链接适用于SQL Server 2008 R2,如果您愿意,可以在文章的顶部选择不同的版本。

希望这足以让您继续完成任务。