C# 使用windows窗体应用程序进行特征化搜索
我在我的C# 使用windows窗体应用程序进行特征化搜索,c#,winforms,datagridview,C#,Winforms,Datagridview,我在我的windows表单应用程序中有一个搜索文本框,当我在文本框中写入h,然后在h的datagridview中显示结果,当我在搜索文本框中添加h和a类似ha,然后在的datagridview中显示结果ha及其变化导致datagridview从h变为ha,与手机联系人搜索相同。我的工作方式如下: public partial class Form2 : Form { SqlConnection connection = new SqlConnection("Data Source=(Lo
windows表单应用程序中有一个搜索文本框
,当我在文本框中写入h
,然后在h
的datagridview中显示结果,当我在搜索文本框中添加h
和a
类似ha
,然后在的datagridview中显示结果ha
及其变化导致datagridview从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
中。然后将栅格绑定到此视图:
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;
}
然后,当过滤器文本框中的文本发生更改时,只需更改数据视图的行过滤器即可:
private void textBox1_TextChanged(object sender, EventArgs e)
{
contactsView.RowFilter =
String.Format("ContactName LIKE '{0}%'", textBox1.Text);
}
如果无法预加载所有数据,则应使用相同的TextChanged
事件来查询过滤后的数据
注意:您应该在用户输入中处理,
。它工作不正常,我得到异常字段“search.Form2.contactsView”从未分配给,并且在这一行数据视图contactsView,它的默认值始终为null代码>@user88请仔细阅读样本。在绑定网格之前有contactsView
初始化