Заполнить dataGrid из базы данных MySQL в C # WPF - PullRequest
5 голосов
/ 06 июня 2011

Я хочу заполнить dataGrid в своем приложении WPF.

Мой XAML:

<DataGrid AutoGenerateColumns="True" Height="200" HorizontalAlignment="Left" 
Margin="102,72,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="848" />

Мой код:

  public void FillGrid()
    {
        string MyConString =    
        "SERVER=myserver.com;" +
        "DATABASE=mydatabase;" +
        "UID=myuserid;" +
        "PASSWORD=mypass;";

        string sql = "SELECT clientnr, name, address FROM clients ORDER BY name";

        MySqlConnection connection = new MySqlConnection(MyConString);
        MySqlCommand cmdSel = new MySqlCommand(sql, connection);
        DataTable dt = new DataTable();
        MySqlDataAdapter da = new MySqlDataAdapter(cmdSel);
        da.Fill(dt);
        dataGrid1.DataContext = dt;
    }

Я уверен, чточасть MySQL правильная, она не выдает никаких ошибок.VS10 express не дает ошибок.Но если я выполню метод, моя dataGrid не будет заполнена.

Что я делаю не так?

Заранее спасибо!

Ответы [ 4 ]

6 голосов
/ 06 июня 2011

Установите привязку вашей DataGrid:

<DataGrid ItemsSource="{Binding }" />
3 голосов
/ 06 июня 2011

Вы определенно хотите, чтобы он был привязан к DataTable, а не к адаптеру, как предложила Рэйчел (задача адаптера - заполнить DataTable). Кроме того, полезно заключать в подключения соединения и команды, чтобы убедиться, что все вычищено, например:

public void FillGrid()
{
    string MyConString =
    "SERVER=myserver.com;" +
    "DATABASE=mydatabase;" +
    "UID=myuserid;" +
    "PASSWORD=mypass;";

    string sql = "SELECT clientnr, name, address FROM clients ORDER BY name";

    using (MySqlConnection connection = new MySqlConnection(MyConString))
    {
        connection.Open();
        using (MySqlCommand cmdSel = new MySqlCommand(sql, connection))
        {
            DataTable dt = new DataTable();
            MySqlDataAdapter da = new MySqlDataAdapter(cmdSel);
            da.Fill(dt);
            dataGrid1.DataContext = dt;
        }
        connection.Close();
    }
}
2 голосов
/ 20 января 2013

Заменить

dataGrid1.DataContext = dt; 

с

dataGrid1.ItemsSource = dt.DefaultView;
1 голос
/ 26 июля 2011

Просто вызовите метод FillGrid() после InitializeComponents() в вашем коде позади. Я только что сделал это, и он работает отлично .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...