How to bind MySQL table to datagrid in WPF app

有些话、适合烂在心里 提交于 2020-04-10 06:11:34

问题


I've come across this question a lot, but I can't seem to find a satisfying answer. I have a WPF app in c# with a connection to a remote MySQL database. My goal is to select a table from the database and present it in a datagrid. But after this I want to be able to print a selected row (using given report definition files). So I'm interested in a way to populate my datagrid (I know the mysql statements needed) without storing the mysql table locally in, say an ObservableCollection. I just want to see what's in the desired table and later be able to read each record separately to fill out a template (defined in the rdlc file). How can this be done? I'm in MVVM architecture. Thanks a lot!


回答1:


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;

This is the code i know to fill a DataGrid with database values.

As for printing, it's a bit mor advanced. I think you should consider a google session.




回答2:


I changed DeMama's answer a bit to fit MvvmLight pattern:

In your ViewModel:

1.Declare a property:

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

2.Assign MySQL table to this property:

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;

In your View:

Bind TableFromMySql to DataGrid's ItemsSource,then your table would be seen in DataGrid.



来源:https://stackoverflow.com/questions/17573243/how-to-bind-mysql-table-to-datagrid-in-wpf-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!