特征搜索使用Windows窗体应用程序
本文关键字:窗体 应用程序 Windows 搜索 特征 | 更新日期: 2023-09-27 18:02:24
我在我的windows form application
中有一个搜索文本框,我想通过字符方式搜索字符,当我在文本框中写h
时,在h
的数据视图中显示结果,当我在搜索文本框中添加h
与a
如ha
时,在ha
的数据视图中显示结果,其在数据视图中的变化结果从h
到ha
与手机联系人搜索相同。和我的工作如下:
public partial class Form2 : Form
{
SqlConnection connection = new SqlConnection("Data Source=(LocalDB)''v11.0;AttachDbFilename=C:''Users''Administrator''Documents''Contact.mdf;Integrated Security=True;");
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
bindDatagridview();
if (textBox1.Text != string.Empty)
{
search();
}
}
public void bindDatagridview()
{
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = new SqlCommand("Select * from contactsinfo", connection);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
//dataGridView1.DataBindings();
}
public void search()
{
da.SelectCommand = new SqlCommand("Select * from contactsinfo where ContactName = '" + textBox1.Text + "'", connection);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
clear();
}
}
但是这只在表单加载并且表单只在第一次加载时起作用:请建议我该怎么做,等待你的回复。谢谢。
如果你可以一次加载所有联系人,那么它很简单。在表单加载得到所有的接触,并保存在DataView
。然后将grid绑定到这个视图:
DataView contactsView;
private void Form2_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
var da = new SqlDataAdapter("SELECT * FROM from contactsinfo", conn);
da.Fill(dt);
}
contactsView = dt.AsDataView();
dataGridView1.DataSource = contactsView;
}
当文本在过滤器TextBox:
中发生变化时,更改DataView
的行过滤器private void textBox1_TextChanged(object sender, EventArgs e)
{
contactsView.RowFilter =
String.Format("ContactName LIKE '{0}%'", textBox1.Text);
}
如果你不能预加载所有的数据,那么你应该使用相同的TextChanged
事件来查询过滤后的数据。
注意:你应该在用户输入中处理'