Delen via


Een gebruikersinterface ontwikkelen voor een aangepast verbindingsbeheer

van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Nadat u de implementatie van de eigenschappen en methoden van de basisklasse hebt overschreven om uw aangepaste functionaliteit te bieden, kunt u een aangepaste gebruikersinterface voor uw verbindingsbeheer maken. Als u geen aangepaste gebruikersinterface maakt, kunnen gebruikers uw verbindingsbeheer alleen configureren met behulp van het venster Eigenschappen.

In een aangepast gebruikersinterfaceproject of -assembly hebt u normaal gesproken twee klassen: een klasse die IDtsConnectionManagerUIimplementeert en het Windows-formulier dat wordt weergegeven om informatie van de gebruiker te verzamelen.

Belangrijk

Nadat u uw aangepaste gebruikersinterface hebt ondertekend en gebouwd en geïnstalleerd in de algemene assemblycache, zoals beschreven in Het coderen van een aangepast verbindingsbeheer, moet u de volledig gekwalificeerde naam van deze klasse opgeven in de eigenschap UITypeName van de DtsConnectionAttribute.

Notitie

De meeste taken, bronnen en bestemmingen die zijn ingebouwd in Integration Services, werken alleen met specifieke typen ingebouwde verbindingsmanagers. Daarom kunnen deze monsters niet worden getest met de ingebouwde taken en onderdelen.

De gebruikersinterfaceklasse coderen

De IDtsConnectionManagerUI-interface heeft vier methoden: Initialize, New, Editen Delete. In de volgende secties worden deze vier methoden beschreven.

Notitie

Mogelijk hoeft u geen code te schrijven voor de methode Delete als er geen opschoning vereist is wanneer de gebruiker een exemplaar van de verbindingsbeheerder verwijdert.

De gebruikersinterface initialiseren

In de methode Initialize geeft de ontwerper een verwijzing naar het verbindingsbeheer dat wordt geconfigureerd, zodat de gebruikersinterfaceklasse de eigenschappen van de verbindingsbeheerder kan wijzigen. Zoals wordt weergegeven in de volgende code, moet uw code de verwijzing naar het verbindingsbeheer opslaan voor later gebruik.

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

Een nieuw exemplaar van de gebruikersinterface maken

De New methode, die geen constructor is, wordt aangeroepen na de Initialize methode wanneer de gebruiker een nieuw exemplaar van de verbindingsbeheerder maakt. In de New methode wilt u meestal het formulier weergeven voor bewerken, tenzij de gebruiker een bestaand verbindingsbeheer heeft gekopieerd en geplakt. De volgende code toont een implementatie van deze methode.

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);  
  }  

Verbindingsbeheer bewerken

Omdat het formulier voor bewerking wordt aangeroepen vanuit zowel de New als de Edit methoden, is het handig om een helperfunctie te gebruiken om de code in te kapselen waarmee het formulier wordt weergegeven. De volgende code toont een implementatie van deze helperfunctie.

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

In de methode Edit hoeft u alleen het formulier weer te geven voor bewerking. De volgende code toont een implementatie van de Edit methode die gebruikmaakt van een helper-functie om de code voor het formulier in te kapselen.

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);  
  
}  

Het gebruikersinterfaceformulier coderen

Nadat u de gebruikersinterfaceklasse hebt gemaakt waarmee de methoden van de IDtsConnectionManagerUI-interface zijn geïmplementeerd, moet u een Windows-formulier maken waarin de gebruiker de eigenschappen van uw verbindingsbeheer kan configureren.

Het formulier gebruikersinterface initialiseren

Wanneer u het aangepaste formulier weergeeft voor bewerking, kunt u een verwijzing doorgeven naar het verbindingsbeheer dat wordt bewerkt. U kunt deze verwijzing doorgeven met behulp van een aangepaste constructor voor de formulierklasse of door uw eigen initialiseer methode, zoals hier wordt weergegeven.

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();  
  
 }  

Eigenschappen instellen op het gebruikersinterfaceformulier

Ten slotte heeft uw formulierklasse een helperfunctie nodig waarmee de besturingselementen in het formulier worden ingevuld wanneer deze voor het eerst wordt geladen met de bestaande of de standaardwaarden van de eigenschappen van het verbindingsbeheer. Uw formulierklasse heeft ook een vergelijkbare functie nodig waarmee de waarden van de eigenschappen worden ingesteld op de waarden die door de gebruiker zijn ingevoerd wanneer de gebruiker op OK klikt en het formulier sluit.

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);  
   }  
  
 }  

Zie ook

Een aangepast verbindingsbeheer maken
een aangepast verbindingsbeheer