【问题标题】:C# Setting Custom Properties of SSIS custom data flow component through custom UIC#通过自定义UI设置SSIS自定义数据流组件的自定义属性
【发布时间】:2012-11-28 16:29:25
【问题描述】:

我在尝试设置我通过自定义表单创建的数据流组件的自定义属性时遇到了真正的问题。

我分配的值刚刚被设置,自定义属性要么保持原始值,要么保持为空。

在我的 TaskClass 中,我重写了 ProvideComponentProperties() 方法,并创建了如下所示的自定义属性。

IDTSCustomProperty100 componentCustomProperty = ComponentMetaData.CustomPropertyCollection.New();
componentCustomProperty.Name = "PAFProvider";
componentCustomProperty.Description = "PAF Provider";
componentCustomProperty.Value = "testinitial";

我创建了一个继承自 IDtsComponentUI 接口的 TaskClassUI。我实现了所有必需的方法。

我的初始化方法。

public void Initialize(IDTSComponentMetaData100 dtsComponentMetadata, IServiceProvider serviceProvider)
{
       this._dtsComponentMetaData = dtsComponentMetadata;
            this._serviceprovider = serviceProvider;

}

我的编辑方法的实现

 public bool Edit(IWin32Window parentWindow, Variables variables, Connections connections)
    {
        bool flag;
        try
        {
            PAFUIMainWnd ui = new PAFUIMainWnd(this._dtsComponentMetaData, this._serviceprovider, connections);
            DialogResult result = ui.ShowDialog(parentWindow);
            bool flag1 = result != DialogResult.OK;
            if(!flag1)
            {
                flag = true;
                return flag;
            }
        }
        catch(Exception exe)
        {
            MessageBox.Show(exe.ToString());
        }
        flag = false;
        return flag;            
    }

还有我的 UIFORM 的实现。

public PAFUIMainWnd(IDTSComponentMetaData100 iDTSComponentMetaData100, IServiceProvider serviceProvider, Connections connections)
        {            
            this.components = null;
            this.InitializeComponent();
            this._dtsComponentMetaData = iDTSComponentMetaData100;     
            this._designTimeComponent = this._dtsComponentMetaData.Instantiate();
            textBox1.Text = _dtsComponentMetaData.CustomPropertyCollection["PAFProvider"].Value.ToString();

        }

仅出于测试目的,我在表单上添加了一个文本框和一个按钮。按钮的 OnClick 甚至在下面。我只是从文本框中获取值并将其分配给自定义属性,但它没有分配它。我可以从分配给文本框的自定义属性中读取原始值。我只是不明白为什么我不能分配它。我已经完全遵循了 MSDN 和其他各种示例。如果有人能指出我做错了什么,我将非常感激。它已经到了令人头疼的阶段。

 private void btnOK_Click(object sender, EventArgs e)
    {
       _designTimeComponent.SetComponentProperty("PAFProvider", textBox1.Text);           

        this.Close();
    }

【问题讨论】:

  • 这与您在 Edit 方法中将 flag 变量显式分配为 false 没有任何关系,对吗?我的大脑无法解析太多的不存在。
  • 这与它没有任何关系,但无论如何我都会删除它。它不需要。谢谢现场。我将按照非开发人员的建议重新启动我的机器,但我不知道这会有什么帮助。虽然在这一点上我会尝试任何事情。
  • 您可能想查看msdn.microsoft.com/en-us/library/… SSIS API 中的 task 和 taskHost 之间存在差异。我记得使用 EzAPI 并尝试在 Execute SQL Task 上设置属性时遇到类似问题。
  • 这是一个数据流组件,所以我不访问我在控制流组件中使用的任务或任务主机。我昨晚解决了这个问题。原来我只需要重新启动我的电脑。我只能假设这与汇编寄存器有关。无论如何,谢谢。

标签: c# ssis dataflowtask


【解决方案1】:

重启解决了这个问题。代码非常好。

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多