C# 如何在WPF应用中将MySQL表绑定到datagrid

C# 如何在WPF应用中将MySQL表绑定到datagrid,c#,mysql,wpf,mvvm,wpfdatagrid,C#,Mysql,Wpf,Mvvm,Wpfdatagrid,我经常遇到这个问题,但似乎找不到令人满意的答案。我在c中有一个WPF应用程序,它连接到一个远程MySQL数据库。我的目标是从数据库中选择一个表,并将其显示在datagrid中。但在此之后,我希望能够使用给定的报告定义文件打印选定的行。所以我对一种填充datagrid的方法感兴趣,因为我知道mysql语句是必需的,而不必在本地存储mysql表,比如说ObservableCollection。我只是想看看所需的表中有什么,然后能够分别读取每条记录,以填写rdlc文件中定义的模板。如何做到这一点?我从

我经常遇到这个问题,但似乎找不到令人满意的答案。我在c中有一个WPF应用程序,它连接到一个远程MySQL数据库。我的目标是从数据库中选择一个表,并将其显示在datagrid中。但在此之后,我希望能够使用给定的报告定义文件打印选定的行。所以我对一种填充datagrid的方法感兴趣,因为我知道mysql语句是必需的,而不必在本地存储mysql表,比如说ObservableCollection。我只是想看看所需的表中有什么,然后能够分别读取每条记录,以填写rdlc文件中定义的模板。如何做到这一点?我从事MVVM架构。非常感谢

DataTable dt = new DataTable();
using (MySqlConnection conn = new MySqlConnection("Your connection string"))
{
    conn.Open();
    string query = "SELECT * FROM table";
    using (MySqlDataAdapter da = new MySqlDataAdapter(query, conn))
        da.Fill(dt);
}
yourDataGrid.ItemsSource = dt.DefaultView;
这是我知道的用数据库值填充DataGrid的代码

至于印刷,它有点先进。我认为你应该考虑一下谷歌会议。

这是我知道的用数据库值填充DataGrid的代码


至于印刷,它有点先进。我认为你应该考虑一个谷歌会话。

< P>我改变了DimaA的回答有点适合MVVMLIGHT模式:

在ViewModel中:

1.申报财产:

private DataView tableFromMySql;
public DataView TableFromMySql
{
    get { return tableFromMySql; }
    set
    {
        if (tableFromMySql == value)
            return;
        tableFromMySql = value;
        RaisePropertyChanged("TableFromMySql");
    }
}
DataTable dt = new DataTable();

using (MySqlConnection Conn = new MySqlConnection(connectionStr))
{
    Conn.Open();
    string cmdStr = string.Format("{0} `{1}`", "SELECT * FROM", "yourtable");
    using (MySqlCommand cmdSel = new MySqlCommand(cmdStr, Conn))
    using (MySqlDataAdapter da = new MySqlDataAdapter(cmdSel))
        da.Fill(dt);
}
TableFromMySql = dt.DefaultView;
2.将MySQL表分配给此属性:

private DataView tableFromMySql;
public DataView TableFromMySql
{
    get { return tableFromMySql; }
    set
    {
        if (tableFromMySql == value)
            return;
        tableFromMySql = value;
        RaisePropertyChanged("TableFromMySql");
    }
}
DataTable dt = new DataTable();

using (MySqlConnection Conn = new MySqlConnection(connectionStr))
{
    Conn.Open();
    string cmdStr = string.Format("{0} `{1}`", "SELECT * FROM", "yourtable");
    using (MySqlCommand cmdSel = new MySqlCommand(cmdStr, Conn))
    using (MySqlDataAdapter da = new MySqlDataAdapter(cmdSel))
        da.Fill(dt);
}
TableFromMySql = dt.DefaultView;
在你看来:


将TableFromMySql绑定到DataGrid的ItemsSource,那么您的表就会显示在DataGrid中。

我稍微更改了DeMama的答案,以适应MvvmLight模式:

在ViewModel中:

1.申报财产:

private DataView tableFromMySql;
public DataView TableFromMySql
{
    get { return tableFromMySql; }
    set
    {
        if (tableFromMySql == value)
            return;
        tableFromMySql = value;
        RaisePropertyChanged("TableFromMySql");
    }
}
DataTable dt = new DataTable();

using (MySqlConnection Conn = new MySqlConnection(connectionStr))
{
    Conn.Open();
    string cmdStr = string.Format("{0} `{1}`", "SELECT * FROM", "yourtable");
    using (MySqlCommand cmdSel = new MySqlCommand(cmdStr, Conn))
    using (MySqlDataAdapter da = new MySqlDataAdapter(cmdSel))
        da.Fill(dt);
}
TableFromMySql = dt.DefaultView;
2.将MySQL表分配给此属性:

private DataView tableFromMySql;
public DataView TableFromMySql
{
    get { return tableFromMySql; }
    set
    {
        if (tableFromMySql == value)
            return;
        tableFromMySql = value;
        RaisePropertyChanged("TableFromMySql");
    }
}
DataTable dt = new DataTable();

using (MySqlConnection Conn = new MySqlConnection(connectionStr))
{
    Conn.Open();
    string cmdStr = string.Format("{0} `{1}`", "SELECT * FROM", "yourtable");
    using (MySqlCommand cmdSel = new MySqlCommand(cmdStr, Conn))
    using (MySqlDataAdapter da = new MySqlDataAdapter(cmdSel))
        da.Fill(dt);
}
TableFromMySql = dt.DefaultView;
在你看来:

将TableFromMySql绑定到DataGrid的ItemsSource,这样就可以在DataGrid中看到您的表