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