我想根据两个文本框的输入过滤我的网格视图。 我有什么:
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("[1] LIKE '%{0}%'", textBox1.Text);
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("[2] LIKE '%{0}%'", textBox2.Text);
}
例如,第一列是" 123"第二栏是" clark"。
答案 0 :(得分:0)
使用此代码段来实现您的需求
DataSet ds = new DataSet();
SqlConnection myCon = new SqlConnection(connectionstring);
SqlDataAdapter adapter = new SqlDataAdapter(cmd, myCon);
adapter.Fill(ds);
DataView view = new DataView();
view.Table = ds.Tables[0];
view.RowFilter = "ColumnName = " + TextBox1.Text.Trim();
GridView1.DataSource = view;
GridView1.DataBind();
这是使用 ADO.Net 完成的。
修改以符合您的问题:
private void Form1_Load(object sender, EventArgs e)
{
DataTable resultTable = new DataTable();
string path = @"\\192.168.96.80\hrmspics";
recFolders(path, ref resultTable);
dataGridView1.DataSource = resultTable;
dataGridView1.DataBind();
来自官方Microsoft MSDN:
使用DataBind()方法将数据从数据源绑定到GridView控件。此方法解析控件的活动模板中的所有数据绑定表达式。
答案 1 :(得分:0)
除了设置RowFilter
的值之外,您还需要将数据绑定到gridview(再次),以便在UI上更新。
因此,您需要在两种方法中分配数据源,并在网格上调用DataBind()
。像这样,
GridViewMain.DataSource = dataView;
GridViewMain.DataBind();
答案 2 :(得分:0)
我自己做了,但感谢所有想要帮助我的人。 :)
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("[1] LIKE '%" + textBox1.Text + "%' and [2] like '%" + textBox2.Text + "%'");
}