Udostępnij za pośrednictwem


Opracowywanie interfejsu użytkownika dla niestandardowego menedżer połączeń

Po zostały zostanie zastąpiona stosowania właściwości i metod klasy podstawowej umożliwiają korzystanie z funkcji niestandardowej, można utworzyć interfejs użytkownika niestandardowego dla menedżer połączeń.Jeśli nie utworzysz interfejs użytkownika niestandardowego, użytkownicy mogą skonfigurować menedżer połączeń tylko za pomocą okna właściwości.

W projekcie interfejs użytkownika niestandardowego lub w zestawie zazwyczaj mają dwie klasy — klasy, która implementuje IDtsConnectionManagerUI, a formularz systemu Windows, który wyświetla uzyskanie informacji od użytkownika.

Important noteImportant Note:

Po podpisywania i budowania interfejs użytkownika niestandardowych i instalowania go Global wirtualny plik dziennika Cache zgodnie z opisem w Kodowanie menedżer połączeń do niestandardowych, pamiętaj, aby podać w pełni kwalifikowanej nazwy tej klasy w UITypeName() Właściwość DtsConnectionAttribute.

Aby przykłady menedżerów niestandardowego połączenia Zobacz Sql Server Custom Connection Manager Sample i Excel2 Custom Connection Manager Sample. Przykłady kodu w tym temacie są pobierane z próbki menedżer połączeń i niestandardowy programu SQL Server.

Uwaga

Większość zadań, źródła i miejsca docelowe, które są wbudowane w Integration Services działa tylko z określonych typów połączenia wbudowanego menedżerów. Dlatego te przykłady nie można testować wbudowane zadania i składniki.

Kodowanie klasy interfejs użytkownika

The IDtsConnectionManagerUI interfejs has four methods: Initialize(ConnectionManager, IServiceProvider), New(IWin32Window, Connections, ConnectionManagerUIArgs), Edit(IWin32Window, Connections, ConnectionManagerUIArgs), a Delete(IWin32Window). W poniższych sekcjach opisano te cztery metody.

Uwaga

Nie może być konieczne do pisania kodu dla Delete(IWin32Window) Metoda, jeśli oczyszczania nie jest wymagane, gdy użytkownik usuwa wystąpienie menedżer połączeń.

Inicjowanie interfejs użytkownika

W Initialize(ConnectionManager, IServiceProvider) Metoda, Projektant zawiera odwołanie do menedżer połączeń, który jest konfigurowany tak, aby klasy interfejs użytkownika można zmodyfikować właściwości menedżer połączeń. Jak pokazano w poniższym kodzie, kod musi pamięci podręcznej odwołanie do menedżer połączeń do późniejszego wykorzystania.

Public Sub Initialize(ByVal connectionManager As Microsoft.SqlServer.Dts.Runtime.ConnectionManager, ByVal serviceProvider As System.IServiceProvider) Implements Microsoft.SqlServer.Dts.Runtime.Design.IDtsConnectionManagerUI.Initialize

    _connectionManager = connectionManager
    _serviceProvider = serviceProvider

  End Sub
    public void Initialize(Microsoft.SqlServer.Dts.Runtime.ConnectionManager connectionManager, System.IServiceProvider serviceProvider)
    {

      _connectionManager = connectionManager;
      _serviceProvider = serviceProvider;

    }

Tworzenie nowego wystąpienie interfejs użytkownika

The New(IWin32Window, Connections, ConnectionManagerUIArgs) metoda, which is not a constructor, is called after the Initialize(ConnectionManager, IServiceProvider) metoda when the user creates a new wystąpienie of the menedżer połączeń. W New(IWin32Window, Connections, ConnectionManagerUIArgs) Metoda, zazwyczaj mają być wyświetlane formularza do edycji, chyba że użytkownik ma być skopiowany i wklejony zarządcę istniejące połączenia. W poniższym kodzie pokazano implementacja tej metoda.

  Public Function [New](ByVal parentWindow As System.Windows.Forms.IWin32Window, ByVal connections As Microsoft.SqlServer.Dts.Runtime.Connections, ByVal connectionUIArgs As Microsoft.SqlServer.Dts.Runtime.Design.ConnectionManagerUIArgs) As Boolean Implements Microsoft.SqlServer.Dts.Runtime.Design.IDtsConnectionManagerUI.New

    Dim clipboardService As IDtsClipboardService

    clipboardService = _
      DirectCast(_serviceProvider.GetService(GetType(IDtsClipboardService)), IDtsClipboardService)
    If Not clipboardService Is Nothing Then
      ' If the connection manager has been copied and pasted, take no action.
      If clipboardService.IsPasteActive Then
        Return True
      End If
    End If

    Return EditSqlConnection(parentWindow)

  End Function
  public bool New(System.Windows.Forms.IWin32Window parentWindow, Microsoft.SqlServer.Dts.Runtime.Connections connections, Microsoft.SqlServer.Dts.Runtime.Design.ConnectionManagerUIArgs connectionUIArgs)
    {
      IDtsClipboardService clipboardService;

      clipboardService = (IDtsClipboardService)_serviceProvider.GetService(typeof(IDtsClipboardService));
      if (clipboardService != null)
      // If connection manager has been copied and pasted, take no action.
      {
        if (clipboardService.IsPasteActive)
        {
          return true;
        }
      }

      return EditSqlConnection(parentWindow);
    }

Edytowanie Menedżer połączeń

Ponieważ formularz do edycji jest wywoływana z obu New(IWin32Window, Connections, ConnectionManagerUIArgs) oraz Edit(IWin32Window, Connections, ConnectionManagerUIArgs) metody, jest to wygodne do hermetyzacji kod, który wyświetla formularz za pomocą funkcja pomocnika. W poniższym kodzie pokazano implementacja tej funkcja pomocnika.

  Private Function EditSqlConnection(ByVal parentWindow As IWin32Window) As Boolean

    Dim sqlCMUIForm As New SqlConnMgrUIFormVB

    sqlCMUIForm.Initialize(_connectionManager, _serviceProvider)
    If sqlCMUIForm.ShowDialog(parentWindow) = DialogResult.OK Then
      Return True
    Else
      Return False
    End If

  End Function
   private bool EditSqlConnection(IWin32Window parentWindow)
    {

      SqlConnMgrUIFormCS sqlCMUIForm = new SqlConnMgrUIFormCS();

      sqlCMUIForm.Initialize(_connectionManager, _serviceProvider);
      if (sqlCMUIForm.ShowDialog(parentWindow) == DialogResult.OK)
      {
        return true;
      }
      else
      {
        return false;
      }

    }

W Edit(IWin32Window, Connections, ConnectionManagerUIArgs) Metoda, po prostu trzeba wyświetlić formularz do edycji. W poniższym kodzie pokazano implementacja Edit(IWin32Window, Connections, ConnectionManagerUIArgs) Metoda, która korzysta z funkcja pomocnika do hermetyzacji kodu dla formularza.

  Public Function Edit(ByVal parentWindow As System.Windows.Forms.IWin32Window, ByVal connections As Microsoft.SqlServer.Dts.Runtime.Connections, ByVal connectionUIArg As Microsoft.SqlServer.Dts.Runtime.Design.ConnectionManagerUIArgs) As Boolean Implements Microsoft.SqlServer.Dts.Runtime.Design.IDtsConnectionManagerUI.Edit

    Return EditSqlConnection(parentWindow)

  End Function
    public bool Edit(System.Windows.Forms.IWin32Window parentWindow, Microsoft.SqlServer.Dts.Runtime.Connections connections, Microsoft.SqlServer.Dts.Runtime.Design.ConnectionManagerUIArgs connectionUIArg)
    {

      return EditSqlConnection(parentWindow);

    }

Kodowanie formularzu interfejs użytkownika

Po tworzenia klasy interfejsu użytkownika, który implementuje metody IDtsConnectionManagerUI interfejs, należy utworzyć formularz systemu Windows, użytkownik może skonfigurować właściwości menedżer połączeń.

Inicjowanie formularzu interfejs użytkownika

Podczas wyświetlania formularza niestandardowego do edycji, można przekazać odwołania do menedżer połączeń, który jest edytowany.Możliwe jest przekazanie tego odwołania za pomocą niestandardowych konstruktora dla klasy formularza lub tworząc własne Initialize Metoda, jak pokazano poniżej.

  Public Sub Initialize(ByVal connectionManager As ConnectionManager, ByVal serviceProvider As IServiceProvider)

    _connectionManager = connectionManager
    _serviceProvider = serviceProvider
    ConfigureControlsFromConnectionManager()
    EnableControls()

  End Sub
   public void Initialize(ConnectionManager connectionManager, IServiceProvider serviceProvider)
    {

      _connectionManager = connectionManager;
      _serviceProvider = serviceProvider;
      ConfigureControlsFromConnectionManager();
      EnableControls();

    }

Ustawianie właściwości na formularzu interfejs użytkownika

Na koniec swojej klasy formularza wymaga funkcja pomocy, która wypełnia formantów na formularzu, po jego pierwszym załadowaniu z istniejącego pliku lub domyślnej wartości właściwości menedżer połączeń.Formularz klasy musi również podobną funkcja, która ustawia wartości właściwości wartości wprowadzone przez użytkownika, gdy użytkownik kliknie przycisk OK i zamknięciu formularza.

  Private Const CONNECTIONNAME_BASE As String = "SqlConnectionManager"

  Private Sub ConfigureControlsFromConnectionManager()

    Dim tempName As String
    Dim tempServerName As String
    Dim tempDatabaseName As String

    With _connectionManager

      tempName = .Properties("Name").GetValue(_connectionManager).ToString
      If Not String.IsNullOrEmpty(tempName) Then
        _connectionName = tempName
      Else
        _connectionName = CONNECTIONNAME_BASE
      End If

      tempServerName = .Properties("ServerName").GetValue(_connectionManager).ToString
      If Not String.IsNullOrEmpty(tempServerName) Then
        _serverName = tempServerName
        txtServerName.Text = _serverName
      End If

      tempDatabaseName = .Properties("DatabaseName").GetValue(_connectionManager).ToString
      If Not String.IsNullOrEmpty(tempDatabaseName) Then
        _databaseName = tempDatabaseName
        txtDatabaseName.Text = _databaseName
      End If

    End With

  End Sub

  Private Sub ConfigureConnectionManagerFromControls()

    With _connectionManager
      .Properties("Name").SetValue(_connectionManager, _connectionName)
      .Properties("ServerName").SetValue(_connectionManager, _serverName)
      .Properties("DatabaseName").SetValue(_connectionManager, _databaseName)
    End With

  End Sub
   private const string CONNECTIONNAME_BASE = "SqlConnectionManager";

   private void ConfigureControlsFromConnectionManager()
    {

      string tempName;
      string tempServerName;
      string tempDatabaseName;

      {
        tempName = _connectionManager.Properties["Name"].GetValue(_connectionManager).ToString();
        if (!String.IsNullOrEmpty(tempName))
        {
          _connectionName = tempName;
        }
        else
        {
          _connectionName = CONNECTIONNAME_BASE;
        }

        tempServerName = _connectionManager.Properties["ServerName"].GetValue(_connectionManager).ToString();
        if (!String.IsNullOrEmpty(tempServerName))
        {
          _serverName = tempServerName;
          txtServerName.Text = _serverName;
        }

        tempDatabaseName = _connectionManager.Properties["DatabaseName"].GetValue(_connectionManager).ToString();
        if (!String.IsNullOrEmpty(tempDatabaseName))
        {
          _databaseName = tempDatabaseName;
          txtDatabaseName.Text = _databaseName;
        }

      }

    }

    private void ConfigureConnectionManagerFromControls()
    {

      {
        _connectionManager.Properties["Name"].SetValue(_connectionManager, _connectionName);
        _connectionManager.Properties["ServerName"].SetValue(_connectionManager, _serverName);
        _connectionManager.Properties["DatabaseName"].SetValue(_connectionManager, _databaseName);
      }

    }
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.

Historia zmian

Microsoft Learning

  • Należy zauważyć, że w tym artykule wyjaśniono, dlaczego nie można testować przykłady niestandardowych wbudowane zadania i składniki w dodany Integration Services.