【发布时间】:2019-06-05 09:08:33
【问题描述】:
我正在尝试使用 TextBox 实现搜索/过滤功能。 TextBox 应该搜索通过 SQL 数据库中的数据填充的 ListBox。
这是我目前尝试过的。
private void Search_TextChanged(object sender, TextChangedEventArgs e)
{
GetAreas();
}
private void GetAreas()
{
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
string query_search = "SELECT * FROM tblAllPostCodes WHERE (Town LIKE @Town)";
SqlCommand com = new SqlCommand(query_search, sqlCon);
com.Parameters.AddWithValue("@Town", "%" + Search.Text + "%");
using (SqlDataAdapter adapter = new SqlDataAdapter(com))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
Area.ItemsSource = dt.DefaultView;
}
sqlCon.Close();
}
}
这就是让我的 ListBox 项目显示的方式
public void AreaList()
{
DataTable dt = new DataTable();
SqlDataAdapter adpt = new SqlDataAdapter("SELECT DISTINCT Town from tblAllPostCodes", sqlCon);
adpt.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
Area.Items.Add(dr["Town"].ToString());
}
}
我曾尝试清除项目,但它们最终在搜索时被清除并且没有填充匹配的文本。
任何帮助将不胜感激,我已经为此工作了一段时间。
【问题讨论】:
-
虽然不完全是您问题的答案,但我希望我早点得到一个提示:考虑将您的数据提取到数据对象/模型列表中,而不是使用数据表。它使数据提取稍微复杂一些,但它使其他一切变得简单得多。