GWT-EXT GridPanel显示FormPanel模糊查询结果

首先当然是要提交查询条件了,这里我使用一个名为Search的Servlet来处理模糊查询。在FormPanel的Form中对其onActionComplete事件进行监听,获取Servlet返回的查询结果。而onActionComplete事件的触发需要Servlet返回一个JSON:{“success”,true},只有这里的success为true时才会触发该事件,为false则触发onActionFailed事件。

可是,我现在还要得到查询的结果啊,如果我查询结果既要触发onActionComplete又要带上查询结果,那么我的JSON就得是下面这种格式:

{success:true,results:’{totalCount:1,topics:[{id:100,custName:"neeke",summarization:"概要",linkMan:"联系人",linkPhone:"联系电话",createTime:"2009-03-17"}]}’}

可是onActionComplete的responseText是String类型的,我怎么才能获得results的值能?

经过反复摸索,终于将其搞定了。首先使用JSON.decode()将responseText转为JavaScriptObject类型,接着使用JavaScriptObjectHelper.getAttribute(jsObj, “results”)即可将results的值以String类型取出,最后使用grid.getStore().loadJsonData(results,false)将查询结果载入到GridPanel中去。具体代码如下:

searchPanel.getForm().addListener(new FormListenerAdapter(){
@Override
public void onActionComplete(Form form, int httpStatus,
String responseText) {
JavaScriptObject jsObj = JSON.decode(responseText);
String results = JavaScriptObjectHelper.getAttribute(jsObj, "results");
grid.getStore().loadJsonData(results, false);
}
});

其中loadJsonData()方法的第二个Boolean型参数指定是否将数据追加到GridPanel中去,这里我设为false,这样在载入查询结果之前会自动清空GridPanel中之前的数据。


除非另有声明,本站遵循【署名-非商业性使用-相同方式共享 3.0 共享协议】授权。

转载原创文章请注明,转载自:Neeke[http://www.ineeke.com]

本文链接: http://www.ineeke.com/archives/gridpanelloadjsondatafromsearchresult/

2009年3月12日 | 归档于 ExtJS | 1 条评论
  1. 2009年3月12日 23:53 | #1

    GWT-EXT是什么啊?
    是javascript吗

    Gravatar头像neeke 于 2009-3-13 21:41:31 回复

    是用Java写JavaScript。

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">
n:-zy n:-zr n:-zan n:-xf n:-wx n:-tz n:-tt n:-ts n:-sy n:-st n:-ss n:-sk n:-qd n:-pz n:-lh n:-kun n:-ku n:-hx n:-hd n:-gt n:-gg n:-bz

NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!