C# WinForm中DataGridView自动匹配拼音简码问题

时间:2022-08-31 00:11:42
小弟想实现这样一个功能:
    在DataGridView中某列cells中按键输入拼音时,同步自动打开(数据库中有预生成的拼音简码字段pyjm)匹配该输入拼音的下拉列表资料可供选择。
    例如:输入“qd”,则下拉框中同步显示“QDPJ 青岛啤酒”,“QDCS 青岛纯生”,“QDSS 青岛山水”等
    上述拼音简码和汉字是分两个字段存储的,大侠只要帮演示出匹配拼音简码字段的部分即可。

11 个解决方案

#1


我看见论坛中有类似的问题了,但是还是没看懂,估计这个问题想知道的人也多,请明白的大哥大姐不吝赐教!

#2


简单的你可以用数据库的模糊查询
但效率很低
建立你去看看json
或者你可以先去看看搜狗拼音输入法
会对你有帮助的1!!

#3


按键触发事件时,向数据库用like 查询出匹配的绑定到下拉框。

如果数据不是挺多。
那就一次查出来。放在DataSet或DataTabel中在跟条件过滤掉。
   

#4


检索出来like就可以了,你的cell是一个comboboxCell,输入的时候自动检索,然后绑定。
主要是每次输入都查询数据库代价比较大

#5


需要自己在数据库里做映射表,A映射B
如果输入A则B显示

#6


帮顶,
期待高手

#7


最简单的方法就是在keydown事件里查询数据库

#8


datagridview是没有单元格的keydown事件的,所以要添加一些代码拉处理:

   private DataGridViewTextBoxEditingControl fff;

        private void rowMergeView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            fff = (DataGridViewTextBoxEditingControl)e.Control;
            fff.KeyDown+=new KeyEventHandler(fff_KeyDown);            
        }
        private void fff_KeyDown(object sender, KeyEventArgs e)
        {           
            /*在这里面写你处理数据的代码;建议先把数据放到dataview中。然后再用dataview。dataview进行筛选*/
        }

#9


上面注释部分有点错误

 /* 在这里面写你处理数据的代码;建议先把数据放到dataview中。然后再用dataview.RowFilter属性进行筛选*/

#10


帮顶  
like 全字匹配? 如果关键字很多的话 效率不成问题了吗?

#11


引用 10 楼  的回复:
帮顶  
like 全字匹配? 如果关键字很多的话 效率不成问题了吗?


匹配查询本身就很费时

#1


我看见论坛中有类似的问题了,但是还是没看懂,估计这个问题想知道的人也多,请明白的大哥大姐不吝赐教!

#2


简单的你可以用数据库的模糊查询
但效率很低
建立你去看看json
或者你可以先去看看搜狗拼音输入法
会对你有帮助的1!!

#3


按键触发事件时,向数据库用like 查询出匹配的绑定到下拉框。

如果数据不是挺多。
那就一次查出来。放在DataSet或DataTabel中在跟条件过滤掉。
   

#4


检索出来like就可以了,你的cell是一个comboboxCell,输入的时候自动检索,然后绑定。
主要是每次输入都查询数据库代价比较大

#5


需要自己在数据库里做映射表,A映射B
如果输入A则B显示

#6


帮顶,
期待高手

#7


最简单的方法就是在keydown事件里查询数据库

#8


datagridview是没有单元格的keydown事件的,所以要添加一些代码拉处理:

   private DataGridViewTextBoxEditingControl fff;

        private void rowMergeView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            fff = (DataGridViewTextBoxEditingControl)e.Control;
            fff.KeyDown+=new KeyEventHandler(fff_KeyDown);            
        }
        private void fff_KeyDown(object sender, KeyEventArgs e)
        {           
            /*在这里面写你处理数据的代码;建议先把数据放到dataview中。然后再用dataview。dataview进行筛选*/
        }

#9


上面注释部分有点错误

 /* 在这里面写你处理数据的代码;建议先把数据放到dataview中。然后再用dataview.RowFilter属性进行筛选*/

#10


帮顶  
like 全字匹配? 如果关键字很多的话 效率不成问题了吗?

#11


引用 10 楼  的回复:
帮顶  
like 全字匹配? 如果关键字很多的话 效率不成问题了吗?


匹配查询本身就很费时