c# - Remplir une liste déroulante WPF avec des éléments d'une base de données SQL(SDF)




listbox populate (3)

Cela faisait très longtemps que je cherchais comment faire cela, et je n'ai pas réussi à obtenir une réponse directe sur le sujet, alors j'espère que l'un de vos utilisateurs de StackOverflow pourra m'aider ici. J'ai un ListBox WPF nommé CategoryList et une base de données SDF appelée ProgramsList.sdf (avec deux tables appelées CategoryList et ProgramsList). Ce que je souhaite que mon programme fasse est obtenir les noms de catégorie de la table CategoryList et les liste dans le contrôle ListBox appelé CategoryList.

Voici le code que j'ai essayé, mais cela a seulement fait planter mon programme.

    SqlConnection myConnection = new SqlConnection("Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "ProgramsList.sdf");
    SqlDataReader myReader = null;

    myConnection.Open();
    CategoryList.Items.Clear();
    SqlDataReader dr = new SqlCommand("SELECT Name FROM CategoryList ORDER BY Name DESC", myConnection).ExecuteReader();

    while (myReader.Read())
    {
        CategoryList.Items.Add(dr.GetInt32(0));
    }
    myConnection.Close();

Quelqu'un peut-il m'aider? Merci d'avance!


J'essaierais quelque chose comme ça:

var myConnection = new SqlConnection("Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "ProgramsList.sdf");
var cmd = new SqlCommand("SELECT Name FROM CategoryList ORDER BY Name DESC", myConnection);

myConnection.Open();
CategoryList.Items.Clear();

var sda = new SqlDataAdapter(cmd);
var ds = new DataSet();
sda.Fill(ds);

CategoryList.ItemsSource = ds.Tables["CategoryList"];

myConnection.Close(); 

Notez que vous devrez configurer les liaisons correctes dans votre objet CategoryList, probablement via un XAML comme ceci:

<ListBox>
    <ListBox.Resources>
        <DataTemplate x:Key="DataTemplateItem">
            <Grid Height="Auto" Width="Auto">
                <TextBlock x:Name="Name" Text="{Binding Name}" />
            </Grid>
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

Peut-être que vous voulez dire:

CategoryList.Items.Add(dr.GetString(0));

....


généralement le meilleur moyen de se connecter à la base de données, lors de l'utilisation de WPF, est le lien vers sql





populate