Cooxkie
Cooxkie

Reputation: 7390

How to bind EF dataSet with WPF datagrid?

I can't connect properly my dataSet (from EF) with WPF datagrid. My issue is that my datagrid shows :

Here is my code :

<DataGrid  Name="dataGridDomaines" Grid.Row="4" IsReadOnly="True" ItemsSource="{Binding}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Nom Domaine" Width="300" Binding="{Binding Path=NomDomaine}"></DataGridTextColumn>
            <DataGridTextColumn Header="N° Inter" Width="100" Binding="{Binding Path=idOpérateur}"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

And :

private void Rechercher(string elementARechercher){
        using (CaveAVinContext ctx = new CaveAVinContext())
        {
            //recherche des domaines
            var domaines = ctx.Domaines
                .Where(a => a.NomDomaine.Contains(elementARechercher))
                .ToList();
            dataGridDomaines.ItemsSource = domaines;
            lblDomaines.Content = "Domaine(s) : " + domaines.Count + " resultat(s)";


        }
    }

What's wrong ?

Upvotes: 1

Views: 307

Answers (2)

Tim
Tim

Reputation: 15247

By default, the AutoGenerateColumns property of a DataGrid is true, which will cause it to append all of the columns to the end of whatever you've specified directly.

Just set that to false and you should be good to go.

<DataGrid  Name="dataGridDomaines" Grid.Row="4" 
       IsReadOnly="True" ItemsSource="{Binding}"
       AutoGenerateColumns="false">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Nom Domaine" Width="300" Binding="{Binding Path=NomDomaine}"></DataGridTextColumn>
        <DataGridTextColumn Header="N° Inter" Width="100" Binding="{Binding Path=idOpérateur}"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

Upvotes: 2

Bahman_Aries
Bahman_Aries

Reputation: 4808

Set Datagrid Autogeneratecolumns to False. * Note that The default value for this property is True.

Upvotes: 1

Related Questions