【发布时间】:2015-02-24 16:07:47
【问题描述】:
我一直在网上寻找正确的事件,用于文本框自动生成建议,如 google.com,因此我不必输入整个单元格值来查找我要查找的内容。目前,我有一个按钮,单击该按钮会将网格过滤为我要求的内容,而不仅仅是使用文本框进行过滤。我知道有 Keypress、textchanged 等,我尝试了不同的事件来查看 datagridview 是否在我键入时进行过滤。没有成功。当我键入时,按键事件不会过滤。 textchanged 事件不允许我在文本框中输入。那么我怎样才能做到这一点呢?
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SampleARDUserGroup
{
public partial class FirstPage : Form
{
SqlConnection con;
SqlDataAdapter adap;
DataSet ds;
SqlCommandBuilder cmbl;
public FirstPage()
{
InitializeComponent();
}
private void FirstPage_Load(object sender, EventArgs e)
{
try
{
con = new SqlConnection();
con.ConnectionString = "My Data Source";
con.Open();
adap = new SqlDataAdapter("select RowID as 'ID',UserID as 'User ID', FirstName as 'First Name', LastName as 'Last Name', email as 'E-mail' from JoshTestTable", con);
ds = new System.Data.DataSet();
adap.Fill(ds, "User_Details");
DGV1.DataSource = ds.Tables[0];
DGV1.Columns[0].Visible = false;
DGV1.Columns[2].Visible = false;
DGV1.Columns[3].Visible = false;
DGV1.Columns[4].Visible = false;
}
catch (Exception ex)
{
MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
con = new SqlConnection();
con.ConnectionString = "My Data Source";
SqlDataAdapter sda = new SqlDataAdapter("Select UserID,FirstName,LastName,Email FROM JoshTestTable where UserID like '%" + txtSearch.Text.Trim() + "%' OR FirstName like '%" + txtSearch.Text.Trim() + "%' OR FirstName like '%" + txtSearch.Text.Trim() + "%' OR LastName like '%" + txtSearch.Text.Trim() + "%' OR Email like '%" + txtSearch.Text.Trim() + "%'", con);
DataTable dt = new DataTable();
sda.Fill(dt);
DGV1.DataSource = dt;
DGV1.Columns[1].Visible = false;
DGV1.Columns[2].Visible = false;
DGV1.Columns[3].Visible = false;
}
private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
AddDeleteUsers f2 = new AddDeleteUsers();
f2.ShowDialog();
}
private void AddUsersToGroupsLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
AddUsersToGroups f3 = new AddUsersToGroups();
f3.ShowDialog();
}
private void AddGroupsToUsersLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
AddGroupsToUsers f4 = new AddGroupsToUsers();
f4.ShowDialog();
}
private void txtSearch_TextChanged(object sender, EventArgs e)
{
AutoCompleteStringCollection namesCollection = new AutoCompleteStringCollection();
SqlConnection con = new SqlConnection();
con.ConnectionString = "My Data Source";
con.Open();
String query = "select UserID from JoshTestTable where UserID like '%" + txtSearch.Text + "%'";
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader rr = cmd.ExecuteReader();
rr.Read();
while (rr.Read())
namesCollection.Add(rr["UserID"].ToString());
rr.Close();
txtSearch.AutoCompleteMode = AutoCompleteMode.Suggest;
txtSearch.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtSearch.AutoCompleteCustomSource = namesCollection;
}
}
}
【问题讨论】:
标签: c# sql winforms datagridview