特征搜索使用Windows窗体应用程序

本文关键字:窗体 应用程序 Windows 搜索 特征 | 更新日期: 2023-09-27 18:02:24

我在我的windows form application中有一个搜索文本框,我想通过字符方式搜索字符,当我在文本框中写h时,在h的数据视图中显示结果,当我在搜索文本框中添加haha时,在ha的数据视图中显示结果,其在数据视图中的变化结果从hha与手机联系人搜索相同。和我的工作如下:

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();
    }
}

但是这只在表单加载并且表单只在第一次加载时起作用:请建议我该怎么做,等待你的回复。谢谢。

特征搜索使用Windows窗体应用程序

如果你可以一次加载所有联系人,那么它很简单。在表单加载得到所有的接触,并保存在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事件来查询过滤后的数据。

注意:你应该在用户输入中处理'