【问题标题】:How to bind MySQL table to datagrid in WPF app如何在 WPF 应用程序中将 MySQL 表绑定到数据网格
【发布时间】:2013-07-08 12:52:27
【问题描述】:
我经常遇到这个问题,但似乎找不到令人满意的答案。我在 c# 中有一个 WPF 应用程序,它连接到远程 MySQL 数据库。我的目标是从数据库中选择一个表并将其呈现在数据网格中。但在此之后,我希望能够打印选定的行(使用给定的报告定义文件)。所以我对填充我的数据网格(我知道所需的 mysql 语句)而不在本地存储 mysql 表的方法感兴趣,比如 ObservableCollection。我只想查看所需表中的内容,然后能够分别读取每条记录以填写模板(在 rdlc 文件中定义)。如何才能做到这一点?我在 MVVM 架构中。非常感谢!
【问题讨论】:
标签:
c#
mysql
wpf
mvvm
wpfdatagrid
【解决方案1】:
我稍微改变了 DeMama 的答案以适应 MvvmLight 模式:
在您的 ViewModel 中:
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 中看到。
【解决方案2】:
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 的代码。
至于打印,它有点高级。我认为您应该考虑使用 Google 会话。