Exemplarische Vorgehensweise: Herstellen einer Verbindung mit Daten in einem Webdienst (Windows Forms)
In dieser exemplarischen Vorgehensweise wird erläutert, wie die Anwendung mit einem Webdienst verbunden wird, der den Assistent zum Konfigurieren von Datenquellen verwendet. Sie stellen eine Verbindung mit dem Live Search-Webdienst her und führen Suchabfragen in der Anwendung aus. Die vom Dienst zurückgegebenen Daten (die Suchergebnisse) werden in einem Windows-Formular angezeigt.
In dieser exemplarischen Vorgehensweise werden u. a. folgende Aufgaben veranschaulicht:
Erstellen eines neuen Projekts vom Typ Windows-Anwendung.
Hinzufügen eines Dienstverweises zu einer Anwendung (Herstellen einer Verbindung mit dem Live Search-Dienst).
Hinzufügen von Steuerelementen zum Durchführen von Abfragen (vom Dienst verfügbar gemachte Aufrufmethoden).
Schreiben von Code für den Zugriff auf den Dienst und die Rückgabe von Daten.
Binden der vom Dienst an das BindingSource-Element zurückgegebenen Daten.
Anzeigen der vom Dienst zurückgegebenen Daten in einem Raster.
Abrufen eines AppID-Elements
Ein AppID-Element ist in Live Search kostenlos verfügbar und ermöglicht dem Live Search-Dienst die eindeutige Identifizierung der Anwendung. Das AppID-Element ist erforderlich, um auf den Dienst zuzugreifen.
So rufen Sie ein AppID-Element ab
Navigieren zu http://search.live.com/developer, und rufen Sie ein kostenloses AppID-Element ab.
Hinweis
Die Überprüfung des AppID-Elements durch den Dienst nimmt ggf. etwas Zeit in Anspruch (30-60 Minuten).Tritt innerhalb dieses Zeitraums beim Ausführen der Anwendung ein generischer Clientfehler auf, befindet sich das AppID-Element wahrscheinlich noch im Prozess der Aktivierung auf den Live Search-Servern.
Erstellen des Projekts
So erstellen Sie ein neues Projekt
Erstellen Sie über das Menü Datei ein neues Projekt.
Wählen Sie Windows Forms-Anwendung aus, und geben Sie dieser den Namen WebServiceWalkthrough.
Klicken Sie auf OK.
Das Projekt wird erstellt und zum Projektmappen-Explorer hinzugefügt.
Herstellen einer Verbindung mit dem Dienst
Stellen Sie eine Verbindung mit dem Webdienst her, indem Sie den Assistent zum Konfigurieren von Datenquellen ausführen.
So stellen Sie eine Verbindung mit dem Live Search-Webdienst her
Klicken Sie im Menü Daten auf Datenquellen anzeigen.
Wählen Sie im Datenquellenfenster die Option Neue Datenquelle hinzufügen aus.
Wählen Sie auf der Seite Datenquellentyp auswählen die Option Dienst, und klicken Sie auf Weiter.
Geben Sie im Dialogfeld Dienstverweis hinzufügen im Feld URL https://soap.search.msn.com/webservices.asmx?wsdl ein.
Klicken Sie auf Weiter.
Nachdem der Webdienst gefunden wurde, ändern Sie den Namespace zu LiveSearchService.
Klicken Sie auf OK, und klicken Sie dann auf Fertig stellen, um dem Projekt den Dienstverweis hinzuzufügen.
Dem Projekt wird der Dienstverweis hinzugefügt, und das Datenquellenfenster wird auf Grundlage der vom Dienst zurückgegebenen Elemente aufgefüllt.
Hinweis
Da andere Webdienste andere Funktionen aufweisen, sind die nächsten Schritte in dieser exemplarischen Vorgehensweise spezifisch für die Nutzung des Live Search-Webdienstes.Normalerweise werden Daten eines Dienstes genutzt, indem eine Instanz des Dienstes erstellt wird und anschließend die vom Dienst bereitgestellten Methoden aufgerufen werden.Nach dem Ziehen von Elementen aus dem Datenquellenfenster sollte Ihr Formular eine BindingSource-Komponente enthalten. Legen Sie die DataSource-Eigenschaft auf die vom Dienst zurückgegebenen Daten fest.
Erstellen eines DataGridView-Elements zum Anzeigen der vom Dienst zurückgegebenen Daten
Erstellen Sie ein datengebundenes Datenraster durch Ziehen von Elementen aus dem Datenquellenfenster auf das Formular. Konfigurieren Sie nach dem Hinzufügen des Rasters die Spalten so, dass lediglich die Spalten angezeigt werden, die dargestellt werden sollen. Legen Sie anschließend die Spalte für die URL auf einen Link fest, damit Benutzer auf die URL klicken und zu den von der Suchabfrage zurückgegebenen Websites navigieren können.
So erstellen Sie das datengebundene DataGridView-Element
Erweitern Sie im Datenquellenfenster den Knoten für die Suchantwort.
Erweitern Sie den Knoten für die Antworten.
Ziehen Sie den Knoten Ergebnisse auf das Formular.
Dem Formular wird ein DataGridView-, ein BindingSource- und ein BindingNavigator-Element hinzugefügt.
Wählen Sie das resultsDataGridView-Element aus, das dem Formular hinzugefügt wurde.
Wählen Sie im Fenster Eigenschaften die Eigenschaft Spalten aus, und klicken Sie auf die Auslassungszeichen, um Dialogfeld "Spalten bearbeiten" (Entwurfsansicht) zu öffnen.
Wählen Sie die Spalte URL aus, und legen Sie
die Eigenschaft ColumnType auf DataGridViewLinkColumn
und die Eigenschaft AutoSizeMode auf AllCells fest.
Entfernen Sie alle Spalten außer Titel, Beschreibung und URL.
Klicken Sie auf OK.
Hinzufügen von Steuerelementen zum Eingeben von Suchenkriterien und Ausführen der Suchabfrage
Fügen Sie dem Toolstrip-Element Steuerelemente zum Ausführen von Suchabfragen hinzu.
So fügen Sie dem Formular ein Textfeld und eine Schaltfläche hinzu
Klicken Sie mit der rechten Maustaste auf das ausgegraute Datenträgersymbol auf dem Toolstrip-Element des Formulars, und wählen Sie die Option zum vom Textfeld gefolgten Einfügen aus.
Legen Sie im Fenster Eigenschaften für die Eigenschaft Name den Wert searchCriteriaTextBox fest.
Legen Sie die Eigenschaft Text auf Visual Studio fest.
Fügen Sie dem Toolstrip-Element eine Schaltfläche hinzu, und nennen Sie diese searchButton.
Legen Sie im Eigenschaftenfenster die Eigenschaft DisplayStyle auf Text fest.
Legen Sie die Eigenschaft Text auf "Suchen" fest.
Erstellen eines Event-Handlers zum Öffnen der im Raster angeklickten Website
Fügen Sie einen Ereignishandler für das CellContentClick-Ereignis hinzu.
So erstellen Sie den CellContentClick-Ereignishandler
Wählen Sie im Formular das resultsDataGridView-Element aus, und klicken Sie dann im Eigenschaftenfenster auf die Schaltfläche "Ereignisse". Die Schaltfläche Ereignisse ist die Schaltfläche mit dem Blitzsymbol.
Doppelklicken Sie auf das Ereignis CellContentClick, um einen Handlerstub zu erstellen und zu diesem zu navigieren.
Fügen Sie Code hinzu, um zu überprüfen, welche Spalte angeklickt wurde und um zur Webseite zu navigieren, wenn auf die Spalte "URL" geklickt wird.
Private Sub ResultsDataGridView_CellContentClick( _ ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles ResultsDataGridView.CellContentClick ' When the content in a cell is clicked check to see if it is the Url column. ' If it is, pass the url to the Process.Start method to open the web page. If ResultsDataGridView.Columns(e.ColumnIndex).DataPropertyName = "Url" Then System.Diagnostics.Process.Start(ResultsDataGridView.SelectedCells(0).Value) End If End Sub
private void resultsDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) { // When the content in a cell is clicked check to see if it is the Url column. // If it is, pass the url to the Process.Start method to open the web page. if (resultsDataGridView.Columns[e.ColumnIndex].DataPropertyName == "Url") { System.Diagnostics.Process.Start(resultsDataGridView.SelectedCells[0].Value.ToString()); } }
Hinzufügen von Code zum Zugreifen auf den Live Search-Dienst und Ausführen einer Suchabfrage
Greifen Sie durch das Instanziieren einer Instanz des Diensts in der Anwendung und Aufrufen der vom Dienst verfügbar gemachten Methoden auf den Dienst zu.
So greifen Sie auf den Dienst zu und nutzen ihn
Öffnen Sie im Code-Editor "Form1".
Fügen Sie "Form1" die folgende Methode hinzu:
Private Sub RunSearchRequest() ' Create an instance of the service. Dim searchService As New LiveSearchService.MSNSearchPortTypeClient ' Instantiate a new SearchRequest. Dim searchRequest As New LiveSearchService.SearchRequest ' Create a new SourceRequest. Dim sourceRequest(1) As LiveSearchService.SourceRequest sourceRequest(0) = New LiveSearchService.SourceRequest ' To search the web, set the SourceType to Web. sourceRequest(0).Source = LiveSearchService.SourceType.Web ' Set the columns you want the query to return. sourceRequest(0).ResultFields = _ LiveSearchService.ResultFieldMask.Description And _ LiveSearchService.ResultFieldMask.Url And _ LiveSearchService.ResultFieldMask.Title ' Search for the text in the textbox. searchRequest.Query = searchCriteriaTextBox.Text ' Set the SearchRequest to the SourceRequest array. searchRequest.Requests = sourceRequest ' Replace with a valid AppID. Obtain a free AppID at: ' http://search.live.com/developer searchRequest.AppID = "AppID" searchRequest.CultureInfo = "en-US" ' Create a SearchResponse, then call the Search method ' and assign the return value to the response object. Dim searchResponse As LiveSearchService.SearchResponse = _ searchService.Search(searchRequest) ' Bind the results to the form's BindingSource. ResultsBindingSource.DataSource = searchResponse.Responses(0).Results End Sub
private void RunSearchRequest() { // Create an instance of the service. LiveSearchService.MSNSearchPortTypeClient searchService = new LiveSearchService.MSNSearchPortTypeClient(); // Instantiate a new search request. LiveSearchService.SearchRequest searchRequest = new LiveSearchService.SearchRequest(); // Create a new SourceRequest. LiveSearchService.SourceRequest[] sourceRequest = new LiveSearchService.SourceRequest[1]; sourceRequest[0] = new LiveSearchService.SourceRequest(); // Set the number of results to return. sourceRequest[0].Count = 7; // To search the web, set the SourceType to Web. sourceRequest[0].Source = LiveSearchService.SourceType.Web; // Set the columns to be returned from the search query. sourceRequest[0].ResultFields = LiveSearchService.ResultFieldMask.Description | LiveSearchService.ResultFieldMask.Url | LiveSearchService.ResultFieldMask.Title; // Set the search query to the value in the text box. searchRequest.Query = searchCriteriaTextBox.Text; // Set the search request to the array of source requests. searchRequest.Requests = sourceRequest; // Replace with a valid AppID. Obtain a free AppID at: // http://search.live.com/developer searchRequest.AppID = "AppID"; searchRequest.CultureInfo = "en-US"; // Create a SearchResponse, then call the search method // and assign the return value to the response object. LiveSearchService.SearchResponse searchResponse = searchService.Search(searchRequest); // Bind the results from the search query to the form's BindingSource. resultsBindingSource.DataSource = searchResponse.Responses[0].Results; }
Hinweis
Ersetzen Sie "searchRequest.AppID = "AppID"" mit dem vom Live Search-Dienst abgerufenen AppID-Wert.
Erstellen eines Ereignishandlers zum Ausführen einer Suche, wenn auf die Suchschaltfläche geklickt wird
Erstellen Sie einen Ereignishandler für das searchButton.Click-Ereignis, und rufen Sie die RunSearchRequest-Methode auf.
So fügen Sie eine Suchmöglichkeit ein, wenn auf die Schaltfläche Einfügen geklickt wird
Öffnen Sie Form1 in der Entwurfsansicht.
Doppelklicken Sie auf die Schaltfläche Suchen.
Fügen Sie dem erstellten Ereignishandler folgenden Code hinzu:
Private Sub searchButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles searchButton.Click RunSearchRequest() End Sub
private void searchButton_Click(object sender, EventArgs e) { RunSearchRequest(); }
Ausführen der Anwendung
Führen Sie die Anwendung aus, und führen Sie eine Suchabfrage aus.
So führen Sie die Anwendung und eine Suchabfrage aus
Führen Sie die Anwendung aus (Drücken Sie F5).
Klicken Sie auf Suchen, um im Internet nach Visual Studio zu suchen, dem Standardtext im searchCriteriaTextBox-Element.
Das Raster zeigt die ersten zehn Suchergebnisse an.
Klicken Sie auf eine der URLs, um zur entsprechenden Website zu navigieren.
Geben Sie im Textfeld Redmond WA Weather ein, und klicken Sie auf Suchen.
Das Raster wird mit den neuen Suchergebnissen aktualisiert.
Nächste Schritte
Der Zugriff auf den Live Search-Dienst ist nur als Einstiegspunkt zu verstehen, um zu verdeutlichen, wie mit der Datenbindungsfunktionen in Windows Forms-Anwendungen die von einem Dienst zurückgegebenen Daten angezeigt werden. Nach dem Herstellen einer Verbindung mit einem anderen Dienst und dem Ziehen von Elementen aus dem Datenquellenfenster sollte Ihr Formular eine BindingSource-Komponente enthalten. Legen Sie die DataSource-Eigenschaft auf die vom Dienst zurückgegebenen Daten fest. Weitere Informationen hierzu finden Sie unter Übersicht über die BindingSource-Komponente.
Hinweis
Die im Datenquellenfenster angezeigten Elemente sind von den Informationen abhängig, die vom Webdienst zurückgegeben werden.Einige Webdienste stellen möglicherweise nicht genügend Informationen bereit, damit der Assistent zum Konfigurieren von Datenquellen bindbare Objekte erstellen kann.Wenn der Webdienst z. B. ein Objekt zurückgibt, das kein auffindbares Schema bereitstellt, werden nach dem Abschließen des Assistenten keine Elemente im Datenquellenfenster angezeigt.
So fügen Sie der Anwendung Funktionalität hinzu
Wählen Sie im Datenquellenfenster Elemente aus, und ziehen Sie sie auf ein Formular. Weitere Informationen finden Sie unter Binden von Windows Forms-Steuerelementen an Daten in Visual Studio.
Erstellen Sie eine Instanz des Dienstes im Formular.
Legen Sie die generierte DataSource-Eigenschaft auf die vom Webdienst zurückgegebenen Daten fest.
Siehe auch
Konzepte
Binden von Steuerelementen an Daten in Visual Studio
Bearbeiten von Daten in der Anwendung