【问题标题】:How can I use a Check Box List for custom property in a custom SSIS data flow component?如何在自定义 SSIS 数据流组件中为自定义属性使用复选框列表?
【发布时间】:2011-10-31 15:12:56
【问题描述】:

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

更新

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

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

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

澄清

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

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

我需要知道的是:

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

【问题讨论】:

  • 问题可能说明了一切,但我不知道它在说什么。 ;) 你能提供一个你正在尝试做什么的例子吗?输入集合是静态列表还是应该基于某些外部源?
  • 好的。我刚刚用一个例子更新了这个问题。
  • 那么像模糊查找的高级选项卡?将这些操作应用于数据流中的内容(可能是每列)?您在组件开发方面处于什么位置?你有很多经验吗?
  • 我之前开发过另一个组件。对事物的工作原理有基本的了解,但没有什么真正深入的知识。但是是的,基本上选择一些您在处理输入时将使用的选项......
  • 让你的问题更具体,你需要什么:如何用值填充列表,如何使用组合框制作组件 ui,如何将列表绑定到组合框,如何读/写自定义组件基于组合框选择的属性?也许最好一步一步提出问题。

标签: c# ssis


【解决方案1】:

让我先回答第一个问题:

  • 据我所知,无法通过高级编辑器执行此操作,因为您无法在其中托管自定义 UI 控件;或者至少我不知道该怎么做
  • 注意我写了“自定义”,因为您要求组合框具有多项选择,而此类控件在 .NET 中不可用;但是如果您愿意,Internet 上有很多关于如何创建此类控件的信息

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

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

关于将属性值从组件传递到 UI 并返回的说明:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2017-11-07
    • 2014-03-18
    • 2012-09-17
    • 1970-01-01
    相关资源
    最近更新 更多