Udostępnij za pośrednictwem


Developing a User Interface for a Data Flow Component

Deweloperzy składników może dostarczyć niestandardowy interfejs dla składnika, który jest wyświetlany w Business Intelligence Development Studio gdy składnik jest edytowany. Implementowania interfejs użytkownika niestandardowego zapewnia powiadomienie, gdy składnik zostanie dodany do lub usunięty z zadanie przepływ danych, a kiedy pomoc jest wymagane dla składnika.

Jeśli nie zapewniają interfejs użytkownika niestandardowego składnika, użytkownicy nadal mogą skonfigurować składnika i jego właściwości niestandardowe za pomocą zaawansowanego edytora.Można zapewnić, że Zaawansowany edytor pozwala użytkownikom na edytowanie wartości właściwość niestandardowych, odpowiednio za pomocą TypeConverter() i UITypeEditor() właściwość IDTSCustomProperty100 w razie potrzeby. Aby uzyskać więcej informacji zobacz temat "" Tworzenie niestandardowych właściwości"w Metody czasu projektowania składnik przepływu danych.

Ustawienie właściwość UITypeName

Aby udostępnić interfejs użytkownika niestandardowego, programista musi zestaw UITypeName() Właściwość DtsPipelineComponentAttribute Nazwa klasy, która implementuje IDtsComponentUI interfejs. When this property is set by the component, SQL Server Integration Services loads and calls the custom user interface when the component is edited in SSIS Designer.

The UITypeName() właściwość is a comma-delimited ciąg that identifies the fully qualified name of the type. Na poniższej liście przedstawiono w kolejności elementów, które umożliwia zidentyfikowanie typu:

  • Nazwa typu

  • Nazwa wirtualny plik dziennika

  • Wersja pliku

  • Kultura

  • Token klucz publicznego

Poniższy przykład kodu pokazuje klasy, która wynika z PipelineComponent utworzyć klasę i określa UITypeName() Właściwość.

[DtsPipelineComponent(
DisplayName="SampleComponent",
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...",
ComponentType = ComponentType.Transform)]
public class SampleComponent : PipelineComponent
{
//TODO: Implement the component here.
}
<DtsPipelineComponent(DisplayName="SampleComponent", _
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...", ComponentType=ComponentType.Transform)> _ 
Public Class SampleComponent 
 Inherits PipelineComponent 
End Class

Interfejs IDtsComponentUI wykonania

The IDtsComponentUI interfejs contains methods that SSIS Designer calls when a component is added, deleted, and edited. Deweloperzy składników może dostarczyć kod w realizacji tych metod, aby aktywnie współpracować z użytkowników składnika.

Ta klasa jest zazwyczaj realizowane w wirtualny plik dziennika oddzielnie od sam składnik.Chociaż użycie oddzielnych zestawów nie jest wymagane, to umożliwia projektantowi tworzenie oraz rozmieszczanie składnika i interfejs użytkownika, niezależnie od siebie i zachowuje małych binarne wyświetlacz składnika.

Deweloper składnika implementowania interfejs użytkownika niestandardowego zapewnia większą kontrolę nad składnikiem jest edycji w SSIS Projektant. Na przykład, składnik można dodać kod New(IWin32Window) Metoda, która jest wywoływane, gdy składnik początkowo jest dodawany do zadanie przepływu danych i wyświetlić kreatora, który prowadzi użytkownika przez wstępnej konfiguracja składnika.

Po utworzeniu klasy, która implementuje IDtsComponentUI interfejs, należy dodać kod, aby odpowiedzieć na posługiwanie składnika. The Initialize(IDTSComponentMetaData100, IServiceProvider) metoda provides the IDTSComponentMetaData100 interfejs of the component, and is called before the New(IWin32Window) and Edit(IWin32Window, Variables, Connections) methods. To odwołanie powinny być przechowywane w zmiennej element członkowski członkowski prywatnego i można później modyfikować metadane składnika.

Modyfikowanie składnika i pozostające zmiany

The IDTSComponentMetaData100 interfejs is provided as a parameter to the Initialize(IDTSComponentMetaData100, IServiceProvider) metoda. Odwołanie do tego należy w pamięci podręcznej zmienna element członkowski członkowski przez kod interfejs użytkownika i następnie używać do modyfikowania składnika w odpowiedzi na interakcji użytkownika z interfejs użytkownika.

Chociaż można modyfikować bezpośrednio za pomocą składnika IDTSComponentMetaData100 interfejs, lepiej jest utworzyć wystąpienie CManagedComponentWrapper za pomocą Instantiate() Metoda. Podczas edytowania składnika bezpośrednio przy użyciu interfejs, należy pominąć składnika sprawdzania poprawności zabezpieczeń.Zaletą stosowania czas projektowania wystąpienie składnika za pomocą CManagedComponentWrapper to, że upewnij się, że składnik ma kontrolę nad zmian wprowadzonych do niego.

Wartość zwracana przez Edit(IWin32Window, Variables, Connections) Metoda określa, czy zmiany wprowadzone w składniku są zachowywane lub odrzucone. Po powrocie tej metoda false, wszystkie zmiany zostaną odrzucone. true będzie się powtarzał zmian do składnika i oznacza pakiet jako wymagające do zapisania.

Korzystając z projektanta SSIS usług

The IServiceProvider parameter of the Initialize(IDTSComponentMetaData100, IServiceProvider) metoda provides access to the following services of SSIS Designer:

usługa

Description

IDtsClipboardService

Służy do określenia, czy składnik został wygenerowany jako część kopiowania/wklejania lub Wytnij/Wklej operacji.

IDtsConnectionService

Używane do dostępu do istniejących połączeń lub do tworzenia nowych połączeń w pakiet.

IErrorCollectionService

Służy do przechwytywania zdarzeń ze składników przepływ danych, gdy zachodzi potrzeba przechwytywania błędów i ostrzeżeń wywoływane przez składnik zamiast odbiera tylko ostatni błąd lub ostrzeżenie.

IDtsVariableService

Używane do dostępu do istniejących zmiennych lub tworzyć nowe zmienne w pakiet.

IDtsPipelineEnvironmentService

Używany przez składniki przepływ danych do dostępu do obiektu nadrzędnego zadanie przepływ danych i innych składników w przepływie danych.Opracowanie składników takich jak powoli zmienny wymiar Kreator, który tworzy i łączy składniki przepływu dodatkowych danych w razie potrzeby można można użyć tej funkcji.

Usługi te zapewniają Deweloperzy składników możliwość uzyskania dostępu i tworzenia obiektów w pakiecie, w której jest ładowany do składnika.

Przykład

Poniższy przykład kodu pokazuje integracja klasy interfejsu użytkownika niestandardowego, który implementuje IDtsComponentUI interfejs i formularzy systemu Windows, który służy jako edytor dla składnika.

Niestandardowa klasa interfejs użytkownika

W poniższym kodzie pokazano klasy, która implementuje IDtsComponentUI interfejs. The Edit(IWin32Window, Variables, Connections) metoda creates the component editor and then displays the form. Wartość zwracana przez formularz określa, czy zmiany wprowadzone w składniku są zachowywane.

using System;
using System.Windows.Forms;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Pipeline.Design;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

namespace Microsoft.Samples.SqlServer.Dts
{
    public class SampleComponentUI : IDtsComponentUI
    {
        IDTSComponentMetaData100 md;
        IServiceProvider sp;

        public void Help(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public void New(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public void Delete(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public bool Edit(System.Windows.Forms.IWin32Window parentWindow, Variables vars, Connections cons)
        {
            // Create and display the form for the user interface.
            SampleComponentUIForm componentEditor = new SampleComponentUIForm(cons, vars, md);

            DialogResult result  = componentEditor.ShowDialog(parentWindow);

            if (result == DialogResult.OK)
                return true;

            return false;
        }
        public void Initialize(IDTSComponentMetaData100 dtsComponentMetadata, IServiceProvider serviceProvider)
        {
            // Store the component metadata.
            this.md = dtsComponentMetadata;
        }
    }
}
Imports System 
Imports System.Windows.Forms 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports Microsoft.SqlServer.Dts.Pipeline.Design 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 

Namespace Microsoft.Samples.SqlServer.Dts 

 Public Class SampleComponentUI 
 Implements IDtsComponentUI 
   Private md As IDTSComponentMetaData100 
   Private sp As IServiceProvider 

   Public Sub Help(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Sub New(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Sub Delete(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Function Edit(ByVal parentWindow As System.Windows.Forms.IWin32Window, ByVal vars As Variables, ByVal cons As Connections) As Boolean 
     ' Create and display the form for the user interface.
     Dim componentEditor As SampleComponentUIForm = New SampleComponentUIForm(cons, vars, md) 
     Dim result As DialogResult = componentEditor.ShowDialog(parentWindow) 
     If result = DialogResult.OK Then 
       Return True 
     End If 
     Return False 
   End Function 

   Public Sub Initialize(ByVal dtsComponentMetadata As IDTSComponentMetaData100, ByVal serviceProvider As IServiceProvider) 
     Me.md = dtsComponentMetadata 
   End Sub 
 End Class 

End Namespace

Edytor niestandardowe

W poniższym kodzie pokazano wykonania formularza systemu Windows, który jest wyświetlany podczas wywołania Edit(IWin32Window, Variables, Connections) Metoda.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime;

namespace Microsoft.Samples.SqlServer.Dts
{
    public partial class SampleComponentUIForm : System.Windows.Forms.Form
    {
        private Connections connections;
        private Variables variables;
        private IDTSComponentMetaData100 metaData;
        private CManagedComponentWrapper designTimeInstance;
        private System.ComponentModel.IContainer components = null;

        public SampleComponentUIForm( Connections cons, Variables vars, IDTSComponentMetaData100 md)
        {
            variables = vars;
            connections = cons;
            metaData = md;
        }

        private void btnOk_Click(object sender, System.EventArgs e)
        {
            if (designTimeInstance == null)
                designTimeInstance = metaData.Instantiate();

            designTimeInstance.SetComponentProperty( "CustomProperty", txtCustomPropertyValue.Text);

            this.Close();
        }

        private void btnCancel_Click(object sender, System.EventArgs e)
        {
            this.Close();
        }
    }
}
Imports System 
Imports System.Drawing 
Imports System.Collections 
Imports System.ComponentModel 
Imports System.Windows.Forms 
Imports System.Data 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Imports Microsoft.SqlServer.Dts.Runtime 

Namespace Microsoft.Samples.SqlServer.Dts 

 Public Partial Class SampleComponentUIForm 
  Inherits System.Windows.Forms.Form 
   Private connections As Connections 
   Private variables As Variables 
   Private metaData As IDTSComponentMetaData100 
   Private designTimeInstance As CManagedComponentWrapper 
   Private components As System.ComponentModel.IContainer = Nothing 

   Public Sub New(ByVal cons As Connections, ByVal vars As Variables, ByVal md As IDTSComponentMetaData100) 
     variables = vars 
     connections = cons 
     metaData = md 
   End Sub 

   Private Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     If designTimeInstance Is Nothing Then 
       designTimeInstance = metaData.Instantiate 
     End If 
     designTimeInstance.SetComponentProperty("CustomProperty", txtCustomPropertyValue.Text) 
     Me.Close 
   End Sub 

   Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Me.Close 
   End Sub 
 End Class 

End Namespace
Integration Services icon (small) Konfiguracja w aktualizacji z usług integracja Services pobytu

Najnowsze pliki do pobrania, artykuły, próbki, i pliki wideo firmy Microsoft, jak również wybranego rozwiązania od Wspólnoty, odwiedź witrynę Integration Services strona w witrynie MSDN lub TechNet:

Automatycznego powiadomienie tych aktualizacji należy subskrybować źródła danych RSS, które jest dostępne strona.