1

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

4

2 回答 2

4

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

在您的视图模型中:

1.声明一个属性:

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

2.将 MySQL 表分配给该属性:

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 中看到。

于 2014-05-21T01:35:11.837 回答
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;

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

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

于 2013-07-11T21:33:19.643 回答