gpt4 book ai didi

c# - 过滤 DataGridView Winforms

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:00 25 4
gpt4 key购买 nike

我正在尝试创建一个接受 2 个用户输入的按钮,然后根据这两个输入过滤 datagridview。我正在使用 winforms 和 SQL。这是我发现并尝试实现的一些代码,但它不会使用过滤后的数据填充 datagridview。

        private void button3_Click(object sender, EventArgs e) {
dataSet31.Personal_Details.Clear();
using (SqlDataAdapter sqlDataAdapter =
new SqlDataAdapter(sqlCommand2.CommandText = "select * from Personal_Details WHERE '" + comboBox2 + "' LIKE '" + textBox1 + "'",
"Data Source=Z46308;Initial Catalog=VSTest;Integrated Security=True"))
{
using (DataTable dataTable = new DataTable())
{
sqlDataAdapter.Fill(dataTable);
this.DataGridView01.DataSource = dataTable;
}
}
}

最佳答案

如果你在表单加载中加载数据,那么你不需要运行查询来过滤网格,你可以简单地使用一个DataView来过滤数据表。

在下面的示例中,我假设您使用 comboBox2 来选择要根据其进行过滤的列名。

//Create a data table to store data when you load them in form load
private DataTable dataTable;
private void Form1_Load(object sender, EventArgs e)
{
dataTable = new DataTable();
string constring = @"Data Source=Z46308;Initial Catalog=VSTest;Integrated Security=True";
using (SqlConnection con = new SqlConnection(constring))
{
using (SqlDataAdapter sda = new SqlDataAdapter("select * from Personal_Details", con))
{
//Fill the data table here
sda.Fill(dataTable);
}
}
//Set the data source of grid
this.DataGridView01.DataSource = new DataView(dataTable);
}
private void button3_Click(object sender, EventArgs e)
{
//Get the datasource from grid
var dv = (DataView)this.DataGridView01.DataSource;

//comboBox2.SelectedItem or comboBox2.SelectedValue based on your settings
//Apply filter to data source
dv.RowFilter = string.Format("{0} Like '%{1}%'",comboBox2.SelectedItem, textBox1.Text);
}

编辑

你也可以使用this.DataGridView01.DataSource = dataTable;来设置数据源,然后在过滤时只需使用dataTable.DefaultView.RowFilter = ....

关于c# - 过滤 DataGridView Winforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com