将JS包装到GWT单元表中

时间:2015-03-19 06:54:41

标签: javascript jquery gwt

在GWT Cell Table中我使用JSNI包装jquery功能(如分组)。但它抛出JavaScriptObject异常(函数是未定义的)。我在加载数据后调用这个JSNI方法

table.setRowData(loadContactInfo());  //To Load Data
    loadGridData();    //Calling JSNI For Grouping 

     private List<ContactInfor> loadContactInfo() {
            // To load data
    List<ContactInfor> lstContact = new ArrayList<ContactInfor>();

    lstContact.add(new ContactInfor("XXX", "YYY", "t", "26", "0300",Big Street"));
            return ContactInfor;
    }

    public static native void loadGridData()/*-{
       //calling js for grouping functionality which contains table tr element
     }-*/; 

由于它需要花费几毫秒来重新绘制单元格表,然后调用JSNI方法抛出JSO异常。在数据加载和渲染后,还有其他任何东西将JS封装到Cell表中吗?对此有何建议?

2 个答案:

答案 0 :(得分:0)

上面的代码中只有很少的信息,但是如果您的问题是由于重绘和jquery之间的时间问题,您可能需要使用Scheduler.get().scheduleDeferred()命令让浏览器执行它的工作在你再次更换dom之前。

http://www.gwtproject.org/javadoc/latest/com/google/gwt/core/client/Scheduler.html

答案 1 :(得分:0)

感谢您的回复,我使用了&#34; flush()&#34;加载数据后的语句见下面的代码

    table.setRowData(loadContactInfo());  
    **table.flush();    //flush force to render immediately**
    loadGridData();    

     private List<ContactInfor> loadContactInfo() {
            // To load data
    List<ContactInfor> lstContact = new ArrayList<ContactInfor>();

    lstContact.add(new ContactInfor("XXX", "YYY", "t", "26", "0300",Big Street"));
            return ContactInfor;
    }

    public static native void loadGridData()/*-{
       //calling js for grouping functionality which contains table tr element
     }-*/; 

并且还可以使用Scheduler.get()。scheduleDeferred()来添加延迟。