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
|
Bieżąco z usług integracji