0

我继承了一个使用 GWT 创建 Web 应用程序的项目。它使用 Bootstrap3 的 GWT 包装器来进行元素的样式设置。这在大多数情况下运行良好。现在我遇到了一个障碍,试图将 Bootstrap3 添加到当前使用 GWTSelect的 GWT表中。问题是 a不是“引导样式”,因此与 Web 应用程序其余部分的样式不匹配。DataGridSelectionCellSelectionCell

Select不幸DataGrid的是,我不能简单SelectCell将. 子类化和实现解决了这个问题。但是,我无法正确呈现 ,因为它需要在 附加到 DOM 后执行 JavaScript 函数,而 DOM 从未被 a 包裹在 a 中。ColumnDataGridSelectCellSelectSelectColumnDataGrid

相反,它是SafeHtmlBuilder由 的render函数渲染成的Cell

// GWTBootstrap3::Select function to render the Select
public void render() {
    if (isAttached())
        command(getElement(), SelectCommand.RENDER);
}

protected native void command(Element e, String command) /*-{
    $wnd.jQuery(e).selectpicker(command);
}-*/;

由于Select从未附加到 DOM,因此我需要selectpicker手动调用该函数。对于他,我创建了自己的本机函数,我需要在SafeHtmlBuilder添加到DataGrid. 如果我的子类通过'sSelect接受CLICK事件并在单击单元格后调用本机函数会正确呈现。CellonBrowserEventSelect

我无法弄清楚何时以selectpicker编程方式调用函数以Select在 RPC 调用添加一行后自动呈现。我试图注册不同的处理程序无济于事。处理程序被调用,并且包装该selectpicker函数的本机函数也被调用,但似乎 HTMLselect尚未添加到表中。调用从浏览器的 JavaScript 控制台截取的上述 JavaScript 也可以。所以它应该可以找到但我需要找到合适的地方打电话:(

DataGrid我正在使用的处理程序:

  • addLoadingStateChangeHandler
  • addRowCountChangeHandler

DataGrid在调用添加到数据之后,我还尝试在不同的地方调用它。同样,HTMLselect似乎没有添加到table. IE。当我在调用myListDataProviderObject.getList()addAll(my data).

4

1 回答 1

0

您很可能需要在调用本机方法之前添加调度程序调用,以确保浏览器在执行此调用之前完成呈现 UI(例如您的 DataGrid)。

于 2016-08-05T00:56:33.783 回答