Condividi tramite


Procedura dettagliata: connessione ai dati in un servizio Web (Windows Form)

In questa procedura dettagliata viene illustrato come connettere l'applicazione a un servizio Web utilizzando la Configurazione guidata origine dati. Verrà effettuata la connessione al servizio Web Live Search e verranno eseguite le query di ricerca dall'applicazione. I dati restituiti dal servizio (i risultati della ricerca) verranno visualizzati in un Windows Form.

Di seguito sono indicate le attività illustrate in questa procedura dettagliata:

  • Creazione di un nuovo progetto Applicazione Windows.

  • Aggiunta di un riferimento al servizio a un'applicazione (connessione al servizio Live Search).

  • Aggiunta di controlli per l'esecuzione di query di ricerca (chiamata ai metodi esposti dal servizio).

  • Scrittura di codice per l'accesso al servizio e la restituzione dei dati.

  • Associazione a BindingSource dei dati restituiti dal servizio.

  • Visualizzazione in una griglia dei dati restituiti dal servizio.

Come ottenere un AppID

In Live Search è disponibile gratuitamente un AppID che identifica in modo univoco l'applicazione nel servizio Live Search. L'AppID è necessario per accedere al servizio.

Per ottenere un AppID

  • Accedere al sito http://search.live.com/developer e scaricare gratuitamente un AppID

    Nota

    La convalida dell'AppID per il servizio potrebbe richiedere dai 30 ai 60 minuti. Se in questo intervallo di tempo, durante l'esecuzione dell'applicazione, si verifica un generico "Errore client" è probabile sia ancora in corso l'abilitazione dell'AppID nei server di Live Search.

Creazione del progetto

Per creare il nuovo progetto

  1. Scegliere il comando per la creazione di un nuovo progetto dal menu File.

  2. Selezionare Applicazione Windows Form e assegnare al progetto il nome WebServiceWalkthrough.

  3. Scegliere OK.

    Il progetto verrà creato e aggiunto a Esplora soluzioni.

Connessione al servizio

Connettersi al servizio Web eseguendo la Configurazione guidata origine dati.

  1. Scegliere Mostra origini dati dal menu Dati.

  2. Nella finestra Origini dati selezionare Aggiungi nuova origine dati.

  3. Selezionare Servizio nella pagina Seleziona un tipo di origine dati e scegliere Avanti.

  4. Digitare https://soap.search.msn.com/webservices.asmx?wsdl nella casella URL della finestra di dialogo Aggiungi riferimento al servizio.

  5. Fare clic su Vai.

  6. Dopo aver trovato il servizio Web, modificare lo spazio dei nomi in: LiveSearchService.

  7. Scegliere OK, quindi fare clic su Fine per aggiungere al progetto il riferimento al servizio.

    Il riferimento al servizio viene aggiunto al progetto e nella finestra Origini dati vengono inseriti dati in base agli elementi restituiti dal servizio.

Nota

Servizi Web diversi espongono funzionalità diverse. I passaggi successivi di questa procedura dettagliata sono specifici dell'utilizzo del servizio Web Live Search. Il processo tipico per l'utilizzo di dati da un servizio comporta la creazione di un'istanza del servizio, quindi la chiamata ai metodi esposti dal servizio. Dopo avere trascinato elementi dalla finestra Origini dati, il form dovrebbe contenere un componente BindingSource. Impostare la proprietà DataSource sui dati restituiti dal servizio.

Creazione di un controllo DataGridView per visualizzare i dati restituiti dal servizio

Creare una griglia dati mediante il trascinamento degli elementi dalla finestra Origini dati al form. Dopo avere aggiunto la griglia, configurare le colonne in modo che vengano visualizzate solo le colonne che si desidera presentare. Impostare quindi la colonna URL su un collegamento per consentire agli utenti di accedere ai siti Web restituiti dalla query di ricerca facendo clic sull'URL.

Per creare il controllo DataGridView associato a dati

  1. Espandere il nodo SearchResponse nella finestra Origini dati.

  2. Espandere il nodo Responses.

  3. Trascinare il nodo Results nel form.

    Al form vengono aggiunti un controllo DataGridView, un controllo BindingSource e un controllo BindingNavigator.

  4. Selezionare il controllo resultsDataGridView aggiunto al form.

  5. Nella finestra Proprietà selezionare la proprietà Columns e fare clic sul pulsante con i puntini di sospensione per aprire la Finestra di dialogo Modifica colonne (visualizzazione Progettazione).

  6. Selezionare la colonna URL e impostare gli elementi seguenti:

    1. Proprietà ColumnType su DataGridViewLinkColumn.

    2. Proprietà AutoSizeMode su AllCells.

  7. Rimuovere tutte le colonne ad eccezione delle colonne Titolo, Descrizione e URL.

  8. Scegliere OK.

Aggiunta di controlli per l'immissione dei criteri di ricerca e l'esecuzione della query di ricerca

Aggiungere controlli alla striscia comandi esistente per consentire l'esecuzione di query di ricerca.

Per aggiungere una casella di testo e un pulsante al form

  1. Fare clic con il pulsante destro del mouse sull'icona del disco disabilitata sulla striscia comandi del form e scegliere Inserisci, quindi TextBox.

  2. Nella finestra Proprietà impostare la proprietà Name su searchCriteriaTextBox.

  3. Impostare la proprietà Text su Visual Studio.

  4. Aggiungere un pulsante alla striscia comandi e denominarlo searchButton.

  5. Nella finestra Proprietà impostare la proprietà DisplayStyle su Text.

  6. Impostare la proprietà Text su Search.

Creazione di un gestore eventi per aprire il sito Web selezionato nella griglia

Aggiunge un gestore eventi per l'evento CellContentClick.

Per creare il gestore eventi CellContentClick

  1. Selezionare il controllo resultsDataGridView nel form e fare clic sul pulsante Eventi nella finestra Proprietà. Il pulsante Eventi è il pulsante con l'icona a forma di saetta.

  2. Fare doppio clic sull'evento CellContentClick per creare lo stub del gestore e passare ad esso.

  3. Aggiungere codice per controllare su quale colonna è stato fatto clic e per accedere alla pagina Web se è stato fatto clic nella colonna URL:

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

Aggiunta di codice per accedere al servizio Live Search ed eseguire una query di ricerca

Accedere al servizio mediante la creazione di un'istanza del servizio nell'applicazione e la chiamata ai metodi esposti dal servizio.

Per accedere al servizio e utilizzarlo

  1. Aprire Form1 nell'editor del codice.

  2. Aggiungere il metodo seguente a Form1:

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

Nota

Assicurarsi di sostituire searchRequest.AppID = "AppID" con il valore di AppID ottenuto dal servizio Live Search.

Creazione di un gestore eventi per l'esecuzione di una ricerca quando si fa clic sul pulsante di ricerca

Creare un gestore eventi per l'evento searchButton.Click e chiamare il metodo RunSearchRequest.

Per implementare la ricerca quando viene fatto clic sul pulsante

  1. Aprire Form1 nella visualizzazione Progettazione.

  2. Fare doppio clic sul pulsante Cerca.

  3. Aggiungere al gestore generato la riga di codice seguente:

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

Esecuzione dell'applicazione

Eseguire l'applicazione ed eseguire una ricerca.

Per eseguire l'applicazione ed eseguire una ricerca

  1. ‎Premere F5 per eseguire l'applicazione.

  2. Fare clic su Cerca per cercare nel Web Visual Studio, ovvero il testo predefinito in searchCriteriaTextBox.

    Nella griglia vengono visualizzati i primi dieci risultati della ricerca.

  3. Fare clic su uno degli URL per accedere al sito Web.

  4. Digitare Redmond WA Weather nella casella di testo e fare clic su Cerca.

    La griglia viene aggiornata con i nuovi risultati della ricerca.

Passaggi successivi

L'accesso al servizio Live Search è solo il punto di partenza per arrivare a comprendere come visualizzare i dati restituiti da un servizio utilizzando le funzionalità di associazione dati nelle applicazioni Windows Form. Dopo avere eseguito la connessione a un servizio diverso e dopo aver trascinato gli elementi dalla finestra Origini dati, il form dovrebbe contenere un componente BindingSource. Impostare la proprietà DataSource sui dati restituiti dal servizio. Per ulteriori informazioni, vedere Cenni preliminari sul componente BindingSource.

Nota

Gli elementi visualizzati nella finestra Origini dati dipendono dalle informazioni restituite dal servizio Web. Alcuni servizi Web potrebbero non fornire informazioni sufficienti per consentire alla Configurazione guidata origine dati di creare oggetti associabili. Se ad esempio il servizio Web restituisce un oggetto che non offre uno schema individuabile, al termine dell'esecuzione della procedura guidata non sarà presente alcun elemento nella finestra Origini dati.

Per aggiungere funzionalità all'applicazione

Vedere anche

Concetti

Associazione di controlli ai dati in Visual Studio

Altre risorse

Modifica di dati nell'applicazione

Convalida dei dati

Salvataggio di dati

Procedure dettagliate relative ai dati