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 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);
}
}
|
Historia zmian
Microsoft Learning |
---|
|