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