C# 搜索功能赢得';t显示
我正在尝试使用一个文本框实现一个搜索功能,该文本框将显示在datagridview中。我希望这样,无论我试图搜索哪个列,无论是从项目名称还是位置,它都会显示在datagridview中。但是,当我在文本框中键入内容时,datagridview不会改变。非常感谢。代码如下:C# 搜索功能赢得';t显示,c#,sql,search,datagridview,C#,Sql,Search,Datagridview,我正在尝试使用一个文本框实现一个搜索功能,该文本框将显示在datagridview中。我希望这样,无论我试图搜索哪个列,无论是从项目名称还是位置,它都会显示在datagridview中。但是,当我在文本框中键入内容时,datagridview不会改变。非常感谢。代码如下: string sql = "SELECT * FROM Project "+"WHERE(ProjectName LIKE @Search)"+ " OR(NumberOfUnits LIKE @Search)"+ "OR(L
string sql = "SELECT * FROM Project "+"WHERE(ProjectName LIKE @Search)"+ " OR(NumberOfUnits LIKE @Search)"+ "OR(Location LIKE @Search)";
using (var con = new SqlConnection(@"Data Source=HAZWAN-PC\SQLEXPRESS;Initial Catalog=wantest2;Integrated Security=True"))
{
using (var cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@Search", "%" + txtSearch.Text + "%");
con.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException er)
{
MessageBox.Show("There was an error accessing your data. DETAIL: " + er.ToString());
}
dataGridView1.DataSource = null;
BindGrid();
}
}
绑定GridView时缺少某些元素或代码行 您必须使用从数据库中提取数据并将其存储到或用于进一步的处理,这里是与gridview绑定的 请尝试以下代码:
DataTable dt = new DataTable();
SqlDataAdapter da;
string sql = "SELECT * FROM Project WHERE ProjectName LIKE @Search OR NumberOfUnits LIKE @Search OR Location LIKE @Search";
using (var con = new SqlConnection(@"Data Source=HAZWAN-PC\SQLEXPRESS;Initial Catalog=wantest2;Integrated Security=True"))
{
using (var cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@Search", "%" + txtSearch.Text + "%");
try
{
con.Open();
//cmd.ExecuteNonQuery();
//Instead of above method you have to use
da = new SqlDataAdapter(cmd);
da.Fill(dt);
da.Dispose();
dataGridView1.DataSource = dt;
con.Close();
}
catch (SqlException er)
{
con.Close();
dataGridView1.DataSource = null;
MessageBox.Show("There was an error accessing your data. DETAIL: " + er.ToString());
}
}
}
您可以将上述代码封装在一个方法中,如
RefreshGrid
或BindGrid
等,并根据需求调用该方法 请检查并相应地编码。。。对于完全忽略结果的DB查询,您预计会发生什么还不清楚。。。以及“dataGridView1.DataSource=null”…尝试在AddWithValue()语句之前将任何“未指定”字段值设置为%。您希望结果来自哪里?您正在调用不会返回结果集的ExecuteOnQuery。我认为这里缺少一些细节。另外,在将数据源设置为null后,您将调用BindGrid()。是这样吗?天哪,这样行得通!对不起,问题含糊不清。对编程非常陌生。我只是跟着youtube上的教程,填空。