我是c#的新手,我正在尝试使用基于组合框值的过滤datagridview。最初我使用数据库中的所有所需值加载datagridview,现在我希望每当用户从组合框中选择任何内容时,DataGridView中的值也应该更改。对我有用的一个解决方案是在每个组合框值更改时请求数据库并且它可以工作...代码附加了
DataRowView view = (DataRowView)comboBox2.SelectedItem;
int year = (int) view.Row["Year"];
DataTable dt = new DataTable();
if (this.OpenConnection() == true)
{
String query = "Select * from yearly where year = "+year;
MySqlCommand cmd = new MySqlCommand(query, connection);
using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
da.Fill(dt);
}
}
但是,有没有办法不一次又一次地请求数据库?我可以根据组合框值过滤datagridview。任何教程或链接都可以。
答案 0 :(得分:1)
在combobox的SelectionChangeCommitted事件中:
private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Year= '{0}'", comboBox1.SelectedItem.ToString());
}
希望它有所帮助。
答案 1 :(得分:0)
解决方案1: 如果您的数据经常更改并且您想要最新数据,则可以使用与您相同的代码。
解决方案2: 从数据源获取数据 - 存储到DataTable - 根据需求过滤数据并将DataGridView源设置为数据集。
您也可以参考this