我想在DataGridView
中添加一个搜索选项,即用户在TextBox
中键入字符串或int,类似的记录应突出显示DataGridView
。我使用KeyPress
事件尝试了它,但没有用。
if (Char.IsLetter(e.KeyChar))
{
for (int i = 0; i < (dgemployee.Rows.Count); i++)
{
if (dgemployee.Rows[i].Cells["Employee"].Value.ToString().
StartsWith(e.KeyChar.ToString(), true,
CultureInfo.InvariantCulture))
{
dgemployee.Rows[i].Cells[0].Selected = true;
return;
}
}
实际上,我需要搜索整个DataGridView
,而不仅仅是一列和一行。那么最好的解决方案呢?
答案 0 :(得分:5)
如果您的DataGridView绑定到DataTable或DataView,您可以这样做:
创建BindingSource并使BindingSource.DataSource
DGV当前正在使用的Datatable或DataView。然后将DataGridView.DataSource
设置为BindingSource。然后,您可以使用BindingSource.Filter
属性通过将BindingSource.Filter
设置为您的查询字符串来查询数据源,该字符串将自动过滤DGV。您可以找到语法here - 它与基本的SQL查询非常相似,除了您只能在字符串的开头和结尾使用通配符。
答案 1 :(得分:0)
答案 2 :(得分:0)
private void txtsearchgroup_KeyUp(object sender, KeyEventArgs e) {
SqlConnection objconnection = new SqlConnection(servername and ...);
DataView Dv = new DataView();
objcommand = new SqlCommand("select name from groupitems", objconnection);
objdataadapter = new SqlDataAdapter();
objdataadapter.SelectCommand = new SqlCommand();
objdataadapter.SelectCommand = objcommand;
objdataset = new DataSet();
objconnection.Open();
objdataadapter.Fill(objdataset);
Dv.Table = objdataset.Tables[0];
Dv.RowFilter = " name LIKE '%" + txtsearchgroup.Text + "%'";
dataGridView1.DataSource = Dv;
objconnection.Close(); }