Dela via


Utveckla ett användargränssnitt för en anpassad anslutningshanterare

gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

När du har åsidosatt implementeringen av egenskaperna och metoderna för basklassen för att tillhandahålla dina anpassade funktioner kanske du vill skapa ett anpassat användargränssnitt för anslutningshanteraren. Om du inte skapar ett anpassat användargränssnitt kan användarna bara konfigurera anslutningshanteraren med hjälp av fönstret Egenskaper.

I ett anpassat användargränssnittsprojekt eller -sammansättning har du normalt två klasser – en klass som implementerar IDtsConnectionManagerUIoch det Windows-formulär som visas för att samla in information från användaren.

Viktig

När du har signerat och skapat ditt anpassade användargränssnitt och installerat det i den globala sammansättningscache enligt beskrivningen i Koda en anpassad anslutningshanterare, kom ihåg att ange det fullständigt kvalificerade namnet på den här klassen i egenskapen UITypeName för DtsConnectionAttribute.

Not

De flesta uppgifter, källor och mål som har byggts in i Integration Services fungerar endast med specifika typer av inbyggda anslutningshanterare. Därför kan dessa exempel inte testas med de inbyggda uppgifterna och komponenterna.

Koda användargränssnittsklassen

Gränssnittet IDtsConnectionManagerUI har fyra metoder: Initialize, New, Editoch Delete. I följande avsnitt beskrivs dessa fyra metoder.

Not

Du kanske inte behöver skriva någon kod för Delete-metoden om ingen rensning krävs när användaren tar bort en instans av anslutningshanteraren.

Initiera användargränssnittet

I metoden Initialize tillhandahåller designern en referens till anslutningshanteraren som konfigureras så att användargränssnittsklassen kan ändra anslutningshanterarens egenskaper. Som du ser i följande kod måste koden cachelagrat referensen till anslutningshanteraren för senare användning.

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

Skapa en ny instans av användargränssnittet

Metoden New, som inte är konstruktor, anropas efter metoden Initialize när användaren skapar en ny instans av anslutningshanteraren. I den New metoden vill du vanligtvis visa formuläret för redigering, såvida inte användaren har kopierat och klistrat in en befintlig anslutningshanterare. Följande kod visar en implementering av den här metoden.

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

Redigera Anslutningshanteraren

Eftersom formuläret för redigering anropas från både New och Edit metoder är det praktiskt att använda en hjälpfunktion för att kapsla in koden som visar formuläret. Följande kod visar en implementering av den här hjälpfunktionen.

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

I metoden Edit måste du helt enkelt visa formuläret för redigering. Följande kod visar en implementering av metoden Edit som använder en hjälpfunktion för att kapsla in koden för formuläret.

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

Koda användargränssnittsformuläret

När du har skapat användargränssnittsklassen som implementerar metoderna i IDtsConnectionManagerUI-gränssnittet måste du skapa ett Windows-formulär där användaren kan konfigurera egenskaperna för anslutningshanteraren.

Initiera användargränssnittsformuläret

När du visar ditt anpassade formulär för redigering kan du skicka en referens till anslutningshanteraren som redigeras. Du kan skicka den här referensen antingen med hjälp av en anpassad konstruktor för formulärklassen eller genom att skapa en egen Initiera metod som visas här.

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

Ange egenskaper i användargränssnittsformuläret

Slutligen behöver formulärklassen en hjälpfunktion som fyller i kontrollerna i formuläret när den först läses in med de befintliga eller standardvärdena för egenskaperna för anslutningshanteraren. Formulärklassen behöver också en liknande funktion som anger egenskapernas värden till de värden som användaren anger när användaren klickar på OK och stänger formuläret.

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

Se även

Skapa en anpassad anslutningshanterare
koda en anpassad anslutningshanterare