Udostępnij przez


Opracowywanie interfejsu użytkownika dla składnika przepływu danych

Składnik deweloperzy mogą dostarczać niestandardowego interfejs użytkownika dla składnika, który jest wyświetlany w Business Intelligence Development Studio podczas edycji komponentu.Implementowanie interfejs użytkownika niestandardowego dostarcza powiadomienie podczas dodawania składnika lub usunięte z zadanie przepływ danych, i gdy pomoc zostanie wywołana dla składnika.

Jeśli interfejs użytkownika niestandardowego nie przewidują składnika, użytkownicy nadal mogą skonfigurować składnika i jego właściwości niestandardowe za pomocą Zaawansowanego edytora.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 odpowiednim.Aby uzyskać więcej informacji zobacz "Tworzenie niestandardowych właściwości" in Projekt —czas metody danych przepływu składnika.

Ustawienie właściwości UITypeName

Aby udostępnić interfejs użytkownika niestandardowego, programista musi zestaw UITypeName Właściwość DtsPipelineComponentAttribute do nazwy klasy, która implementuje IDtsComponentUI interfejsu.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.

UITypeName Właściwość jest rozdzielany przecinkami ciąg identyfikujący w pełni kwalifikowana nazwa typu.Na poniższej liście przedstawiono kolejność elementów, które identyfikują typ:

  • Wpisz nazwę

  • Nazwa zestawu

  • Wersja pliku

  • Kultura

  • Token klucz publicznego

Poniższy przykład kodu pokazuje klasy pochodnej z PipelineComponent Klasa podstawowa 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

Implementowanie interfejsu IDtsComponentUI

IDtsComponentUI interfejs zawiera metody, SSIS Projektant wywołuje gdy dodawane, usuwane i edytowane składnik.Deweloperzy składników można podać kod w ich realizacji tych metod z użytkownikami składnika.

Ta klasa jest implementowane w wirtualny plik dziennika oddzielnie od sam składnik.Chociaż użycie osobne wirtualny plik dziennika jest nie jest wymagane, to umożliwia developer, tworzenie wdrożyć składnika i interfejs użytkownika, niezależnie od siebie i śledzi 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 projektanta.Na przykład, składnik można dodać kod New metoda, która jest wywoływane, gdy składnik jest wstępnie dodanych do zadanie przepływu danychi wyświetlić kreatora, który prowadzi użytkownika przez wstępną konfiguracja składnika.

Po utworzeniu klasy, która implementuje IDtsComponentUI interfejs, należy dodać kod odpowiedzieć na interakcji użytkownika z składnika.Initialize Metoda zapewnia IDTSComponentMetaData100 interfejs składnika i jest wywoływane przed New i Edit metody.To odwołanie należy przechowywane w zmiennej element członkowski prywatnych i można później modyfikować metadane składnika.

Modyfikowanie składnika i utrzymywania zmian

IDTSComponentMetaData100 interfejs jest dostępna jako parametr Initialize metoda.To odwołanie należy buforowane w zmienna element członkowski przez kod interfejs użytkownika i umożliwia modyfikowanie składnika w odpowiedzi na interakcji użytkownika z interfejs użytkownika.

Chociaż można modyfikować 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, ominąć zabezpieczenia sprawdzania poprawności składnika.Zaletą używania projektu -czas instancji składnika poprzez CManagedComponentWrapper jest, upewnij się, że składnik ma kontrolę nad zmiany do niej

Wartość zwracana przez Edit Metoda określa, czy zmiany wprowadzone do składnika są zachowywane lub odrzucone.Gdy ta metoda zwraca false, wszystkie zmiany zostaną odrzucone; truebędzie się powtarzał zmiany składnika i oznacza pakiet jako wymagające zapisane.

Za pomocą usług Projektant SSIS

IServiceProvider Parametr Initialize metoda zapewnia dostęp do następujących usług SSIS Projektant:

Usługi

Opis

[ T:Microsoft.SqlServer.Dts.Design.IDtsClipboardService ]

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

[ T:Microsoft.SqlServer.Dts.Runtime.Design.IDtsConnectionService ]

Używane do dostępu do istniejących połączeń lub tworzyć nowe połączenia w pakiet.

[ T:Microsoft.SqlServer.Dts.Design.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 otrzymujących ostatni błąd lub ostrzeżenie.

[ T:Microsoft.SqlServer.Dts.Runtime.Design.IDtsVariableService ]

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

[ T:Microsoft.SqlServer.Dts.Design.IDtsPipelineEnvironmentService ]

Używany przez składniki przepływ danych dostępu nadrzędnego zadania przepływ danych i inne składniki przepływ danych.Można użyć tej funkcji, opracowanie składnika takiego jak powoli Zmiana wymiaru Kreator, który tworzy i łączy składniki przepływ danych dodatkowych, stosownie do potrzeb.

Usługi te umożliwiają deweloperom składnika dostępu i tworzenia obiektów w pakiet w ładowany jest składnik.

Przykład

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

Niestandardowe klasy interfejsu użytkownika

Poniższy kod przedstawia klasy, która implementuje IDtsComponentUI interfejs.Edit Metoda tworzy składnik Edytor, a następnie wyświetla formularz.Wartość zwracana formularza określa, czy zmiany składnika 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

Poniższy kod przedstawia realizacji formularza systemu Windows, który jest wyświetlany podczas wywołania Edit 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
Ikona usług Integration Services (mała)Bieżąco z usług integracji

Najnowsze pliki do pobrania, artykuły, próbki i wideo firmy Microsoft, jak również wybranych rozwiązań ze Wspólnoty, odwiedź witrynę Integration Services strona na MSDN i TechNet:

Aby otrzymywać automatyczne powiadomienia dotyczące tych aktualizacji, zasubskrybuj źródła danych RSS dostępne na tej stronie.