C# 可编辑组合框工作不正常
我制作了一个可编辑的组合框,用于过滤项目 下面列出了一些问题 1.)第一个问题是它只在第一次起作用。例如,如果我第一次键入B,它将显示以B开头的项目列表。然后,如果我按Backspace并再次输入B,则它将仅显示以B开头的列表中的第一个项目。这是现在的实际问题。下面是我修改代码的链接 2.)第二个问题是我无法在Combobox中键入完整的单词,它只允许我键入第一个字母。它向我显示了与之匹配的项目列表 XAML端代码C# 可编辑组合框工作不正常,c#,.net,wpf,combobox,C#,.net,Wpf,Combobox,我制作了一个可编辑的组合框,用于过滤项目 下面列出了一些问题 1.)第一个问题是它只在第一次起作用。例如,如果我第一次键入B,它将显示以B开头的项目列表。然后,如果我按Backspace并再次输入B,则它将仅显示以B开头的列表中的第一个项目。这是现在的实际问题。下面是我修改代码的链接 2.)第二个问题是我无法在Combobox中键入完整的单词,它只允许我键入第一个字母。它向我显示了与之匹配的项目列表 XAML端代码 <ComboBox Height="23" HorizontalAlign
<ComboBox Height="23" HorizontalAlignment="Left" Margin="292,104,0,0" Name="comboBox3" VerticalAlignment="Top" Width="149" IsEditable="True" IsTextSearchEnabled="True" PreviewTextInput="comboBox3_PreviewTextInput" TextBoxBase.TextChanged="ComboBox_TextChanged"/>
请帮助如果我是你,出于性能原因,我会使用以下方法:
private void ComboBox_TextChanged(object sender, TextChangedEventArgs e)
{
var searchtext = comboBox3.Text;
comboBox3.ItemsSource = null;
SqlDataAdapter da = new SqlDataAdapter("Select p_id_pk,p_name FROM products where p_name like '" + comboBox3.Text + "'+'%'", con);
DataSet ds = new DataSet();
da.Fill(ds, "products");
comboBox3.ItemsSource = ds.Tables[0].DefaultView;
comboBox3.DisplayMemberPath = ds.Tables[0].Columns["p_name"].ToString();
comboBox3.SelectedValuePath = ds.Tables[0].Columns["p_id_pk"].ToString();
comboBox3.Text = searchtext;
}
private DataSet ds = null; // initialize dataset with null value
private void ComboBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (ds == null) // initialize dataset on demand with all possible values from database
{
ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("Select p_id_pk,p_name FROM products", con);
da.Fill(ds, "products");
comboBox3.ItemsSource = ds.Tables[0].DefaultView;
comboBox3.DisplayMemberPath = ds.Tables[0].Columns["p_name"].ToString();
comboBox3.SelectedValuePath = ds.Tables[0].Columns["p_id_pk"].ToString();
return;
}
// filter view based on text input
ds.Tables[0].DefaultView.RowFilter = "p_name like '"+ comboBox3.Text + "%'";
}
我在XAML端做了一个简单的更改,解决了我的问题。现在,我问题中的代码正常工作,WPF Simple combobox被转换为过滤combobox 我基本上已经准备好了
IsTextSearchEnabled="True"
到
这解决了我一个多月以来面临的问题
<ComboBox Height="23" HorizontalAlignment="Left" Margin="292,104,0,0" Name="comboBox3" VerticalAlignment="Top" Width="149" IsEditable="True" IsTextSearchEnabled="False" PreviewTextInput="comboBox3_PreviewTextInput" TextBoxBase.TextChanged="ComboBox_TextChanged"/>
感谢所有试图帮助我的人 这不是我问题的答案。您的解决方案给出了错误“值不能为空。参数名称:dataSet”@yaseenenterprises您尝试过吗?您需要在构造函数中初始化ds。由于自调用循环,您的原始代码无法工作。让我们来看看。
IsTextSearchEnabled="False"
<ComboBox Height="23" HorizontalAlignment="Left" Margin="292,104,0,0" Name="comboBox3" VerticalAlignment="Top" Width="149" IsEditable="True" IsTextSearchEnabled="False" PreviewTextInput="comboBox3_PreviewTextInput" TextBoxBase.TextChanged="ComboBox_TextChanged"/>