c#中的下拉框如何能实现拼音匹配(C/S)
具体要求就是在绑定数据库的下拉列表框,文本框中实现拼音输入匹配下拉和输入模糊检索下拉,就是输入拼音后进行首字母(或者全拼音)匹配,输入相关内容后进行模糊检索后下拉。以前没有接触过这类的问题,请教具体实现应该调用哪些类和方法?能在原先控件的基础上修改么?请各位大牛给个思路,指点下小弟。万分感谢,分数不多先来100请包涵。
[解决办法]
mark
[解决办法]
和网页的类似了
[解决办法]
可以在原先控件的基础上修改。
绑定的数据库加一个拼音的字段,如绑定数据库中地址address字段,则再加一个addresspy字段,例:
address addresspy
北京 bj
上海 sh
河北 hb
河南 hn
这样下拉列表框中输入h字符时,在数据库中查询条件为addresspy like 'h%',就会筛选出河北 河南2条记录了。你只要改变了绑定的数据集的内容,下拉的内容也就对应变了。
[解决办法]
恩,问百度...
[解决办法]
挺复杂不是一句两句可以说的清。继续控件。查询。排序。两边传值。
[解决办法]
}
}
}
public void AutoCompleteClear()
{
foreach (AutoCompleteStringCollection var in _Source.Values)
{
var.Clear();
}
SqlCommand cmd = new SqlCommand("Delete AutoComplete", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
void text_Leave(object sender, EventArgs e)
{
TextBox text = sender as TextBox;
if (text.Text == "")
return;
string key = text.Name;
if (!_Source.ContainsKey(key))
{
_Source.Add(key, new AutoCompleteStringCollection());
}
if (!_Source[key].Contains(text.Text))
{
SqlCommand cmd = new SqlCommand("insert into AutoComplete select '" + key.Replace("'", "''") + "', '" + text.Text.Replace("'", "''") + "'", conn);
conn.Open();
cmd.ExecuteNonQuery();
_Source[key].Add(text.Text);
conn.Close();
}
}
}
}
[解决办法]
参考
[解决办法]
/// <summary> /// 实现数据列的智能匹配 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewTextBoxEditingControl) { DataGridViewTextBoxEditingControl te = (DataGridViewTextBoxEditingControl)e.Control; te.Name = "items"; te.AutoCompleteMode = AutoCompleteMode.Suggest; te.AutoCompleteSource = AutoCompleteSource.CustomSource; SqlConnection conn1 = new SqlConnection("Data Source=.;Initial Catalog=jwinfo;Integrated Security=True;"); conn1.Open(); string comand2 = @"select 姓名 from 学生信息"; SqlDataAdapter adatter2 = new SqlDataAdapter(comand2, conn1); DataSet dataset2 = new DataSet(); adatter2.Fill(dataset2, "学生信息"); string[] itemsg = new string[dataset2.Tables["学生信息"].Rows.Count]; int col = dataGridView1.CurrentCell.ColumnIndex; switch (col) { case 0: break; case 1: for (int i = 0; i < dataset2.Tables["学生信息"].Rows.Count; i++) { itemsg[i] = dataset2.Tables["学生信息"].Rows[i][0].ToString(); te.AutoCompleteCustomSource.AddRange(new string[] { itemsg[i] }); } te.AutoCompleteMode = AutoCompleteMode.SuggestAppend; break; case 3: break; case 4: break; case 5: break; default: break; } } }
[解决办法]
我是自己做的自定义控件来操作的。。。将一个 TextBox 和一个 DataGridView组合在一起实现的。
[解决办法]
不在数据库中加拼音字段,那在SQL查询时动态转换汉字为拼音多麻烦,而且耗时。
即使把要查询的记录先全部放到内存dataset,然后再对dataset进行查询处理,也要耗很大的内存,除非记录数很少。如果记录数少可以这样处理,可以用上面13楼的函数动态转换拼音并筛选。