请问如何用easyui的combobox实现中文搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问如何用easyui的combobox实现中文搜索相关的知识,希望对你有一定的参考价值。

我想用easy ui 的combobox做中文搜索功能,使用的onchange事件reloader后显示出来的是valuefield。请问如何解决?

之前我和你遇到过一样的问题,不要使用onChange,使用loader,我用的是J2EE,不知道你用的是什么环境,但大体是差不多的,主要是JS和html部分,你可以试试:

需求:1、每输入一个字符,读取数据库查询15条近似数据2、读出数据后,按上、下键+回车键进行选择

javascript
//easyUI combobox中不要使用onChange来做读取数据库操作,有很多BUG,建议使用loader
var btsloader = function(param,success,error)

//获取输入的值
var q = param.q || "";

//此处q的length代表输入多少个字符后开始查询
if(q.length <= 0) return false;
$.ajax(
url:"<%=path%>/jsonObj/costAction_getJSONCostList",
type:"post",
data:
//传值,还是JSON数据
searchName:q
,

//重要,如果写jsonp会报转换错误,此处不写都可以
dataType:"json",
success:function(data)

//关键步骤,遍历一个MAP对象
var items = $.map(data.rows, function(item)
return
id:item.id,
name:item.text
;
);

//执行loader的success方法
success(items);
,

//异常处理
error:function(xml, text, msg)
error.apply(this, arguments);

);
;

【HTML】
<input id="costId" name="costId" class="easyui-combobox" style="width:250px;" data-options="
loader: btsloader,
mode: 'remote',
valueField: 'id',
textField: 'name'" />

【JAVA】public String getJSONCostList() throws UnsupportedEncodingException, JSONException
List<HashMap<String, Object>> jsonArr = new ArrayList<HashMap<String, Object>>();
List<Cost> list = costService.searchCosts(0, 14, searchName);
for(Cost c: list)
HashMap<String, Object> hm = new HashMap<String, Object>();
hm.put("id", c.getId());
hm.put("text", c.getBtsName());
jsonArr.add(hm);

HashMap<String, Object> hm = new HashMap<String, Object>();
hm.put("rows", jsonArr);
result = JSONObject.fromObject(hm);
return "ajax";


【struts.xml】
<package name="jsonObj" namespace="/jsonObj" extends="json-default">
<action name="*_*" class="1" method="2">
<result name="ajax" type="json">
<param name="root">result</param>
</result>
</action>
</package>

传入的JSON Object举例: "rows":["id":1,"text":"基站1","id":2,"text":"基站2"]追问

多谢,已经实现了。还有一个问题。就是我希望初始化combobox的时候就发起一个默认请求填充默认值。这个如何实现?

追答

试试初始化页面时定义一个JSON对象,或者用AJAX从后台获取一个JSON对象,再用$("#xxx").combobox("loadData", data);来加载这组数据

参考技术A easyui 的 combobox 本身是具有搜索功能的,听你的描述,似乎是要实现边输入边过滤的下拉菜单功能?那么就可以用下面这样的的写法,从服务器端搜索内容:
<input type="text" name="comboname" class="easyui-combobox" data-options="valueField:'id',textField:'name',editable:true,url:'/server/action'" value="$bean.comboname" />

这样就可以实现从“/server/action”获取json数据,并边输入边过滤的功能了。
同时,value="$bean.comboname"这个写法就能实现你想要的默认值功能。

请问如何用C语言实现“生产者与消费者问题”?(最好附上完整的C语言源代码)

“生产者消费者”问题是计算机《操作系统》教程中的一个典型问题。理解了这个问题,有利于我们理解操作系统中进程的同步问题。

我这是C++的,在网上搜到的,借给你用用, 其实都一样 改个cout cin 就是C了 没问题的 这是我们操作系统实验
#includewindows.h
#includeiostream.h
#includestdio.h
HANDLE hMutex;
HANDLE hFull, hEmpty; HANDLE p,c;
DWORD WINAPI Producer(LPVOID);
DWORD WINAPI Consumer(LPVOID);
int a[100],i,j;
void main()

cout生产者消费者问题endl;
a[100]=i=j=0;
hMutex=CreateMutex(NULL,FALSE,NULL);
hFull=CreateSemaphore(NULL,0,1,NULL);
hEmpty=CreateSemaphore(NULL,1,1,NULL);
p=CreateThread(NULL,0,Producer,NULL,0,NULL);
c=CreateThread(NULL,0,Consumer,NULL,0,NULL);
Sleep(150000);

void Produce()
cout生产者生产产品...endl;
cout生产成功endl;

DWORD WINAPI Producer(LPVOID lpPara)
while(TRUE)
WaitForSingleObject(hEmpty,INFINITE);
WaitForSingleObject(hMutex,INFINITE);
Produce();
a[i]=i;
i=(i+1)%100;
Sleep(5000);
ReleaseMutex(hMutex);
ReleaseSemaphore(hFull,1,NULL);
return 0;

void Consume()

cout消费者消费产品 ... endl;
cout消费成功endl;
cout请等待...endl;

DWORD WINAPI Consumer(LPVOID lpPara)

while(TRUE)
WaitForSingleObject(hFull,INFINITE);
WaitForSingleObject(hMutex,INFINITE);

cout缓冲区a[j]endl;
a[j]=999;
j=(j+1)%100;
Consume();
Sleep(5000);
ReleaseMutex(hMutex);
ReleaseSemaphore(hEmpty,1,NULL);

return 0;
参考技术A 原理很简单,但是实现是非常复杂的。
其中牵涉到大量的用于系统内核的C语言库函数,对于刚刚开始学习的学生来说,那实在是太困难了。
我也学操作系统。P语言描述的也不错,就凑合着用吧。
这里有完整源代码38K。你可以想象有多么夸张了。见我的参考资料。

参考资料:http://www.hsip.cn/soft/3/2006/1D1513422145.html

以上是关于请问如何用easyui的combobox实现中文搜索的主要内容,如果未能解决你的问题,请参考以下文章

请问如何用WPF实现类似VisualStudio这样的设计工具呢? 联系邮箱Dean.Yi@hotmail.com

jquery easyui combobox如何动态加载.json数据

在delphi中如何用combobox实现分级读取数据库中的内容

请问如何用C语言实现“生产者与消费者问题”?(最好附上完整的C语言源代码)

如何用jqueryeasyui实现当提交数据时提示正在处理请稍等功能

如何用VB6中的COMBOBOX实现模糊输入后自动匹配下拉列表