Home / Programmazione / C# - Asp.NET / Riempire una WPF DataGrid da XML remoto
Mattepuffo

Riempire una WPF DataGrid da XML remoto

Riempire una WPF DataGrid da XML remoto

In questi giorni mi sto dando al WPF, in quanto ho deciso di migliorare le mie conoscenze nel mondo .NET Framework.

Oggi vediamo come impostare una DataGrid prendendo i dati da un web service remoto.

I dati sono in formato XML, e noi useremo solo alcuni dei dati che ci arrivano.

Partiamo da una struttura del genere:

<crClientis>
  <crClienti>
   <clienteAttivato></clienteAttivato>
   <clienteCap></clienteCap>
   <clienteCf></clienteCf>
   <clienteClde></clienteClde>
   <clienteCodice></clienteCodice>
   <clienteEmail></clienteEmail>
   <clienteId></clienteId>
   <clienteIndirizzo></clienteIndirizzo>
 </crClienti>
</crClientis>

Come vedete ci sono vari campi.

Questa la nostra Grid:

        <Grid>
            <Grid.Resources>
                <XmlDataProvider x:Key="ClientsData" Source="http://indirizzo_ip/web_service/xml" XPath="/crClientis/crClienti" />
            </Grid.Resources>
            <DataGrid Grid.Row="1" Height="751" VerticalAlignment="Top" x:Name="gridClients" DataContext="{StaticResource ClientsData}"
                      ItemsSource="{Binding XPath=/crClientis/crClienti}" AutoGenerateColumns="False" CanUserResizeRows="False" IsReadOnly="True">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding XPath=clienteCodice}" Header="CODE" />
                    <DataGridTextColumn Binding="{Binding XPath=clienteRagsoc}" Header="NAME" />
                    <DataGridTextColumn Binding="{Binding XPath=clienteEmail}" Header="EMAIL" />
                    <DataGridTextColumn Binding="{Binding XPath=clientePiva}" Header="P.IVA" />
                </DataGrid.Columns>
            </DataGrid>
        </Grid>

In Grid.Resources impostiamo il data source, che è di tipo XmlDataProvider; e qui impostiamo l'indirizzo del server che espone i dati.

Attraverso XPath percorriamo il DOM e recuperiamo solo i campi che ci servono.

Vedete che abbiamo impostato a false il parametro AutoGenerateColumns.

Enjoy!