禁用 GWT 网格

Disable a GWT Grid

好的,我有一个 GWT DataGrid 作为

DataGrid<T> grid

现在我想禁用它,这样用户就无法滚动它或以任何方式弄乱它。有办法吗?

它没有实现 setEnabled(),因此我必须提供自己的实现。

当 UI 元素被禁用时,它看起来会有所不同 - 这是 UI 设计的一个很好的原则。当您说 "disable" DataGrid 时,不清楚您将如何向用户传达它已被禁用的信息。例如,滚动条将保持可见,headers 看起来可点击等。

想到的唯一解决方案是用半透明弹出面板覆盖 DataGrid(又名 "glass")。它将消耗所有用户操作,因此它将阻止与 DataGrid 的任何交互。

如果你只是想防止用户在你的网格上做奇怪的事情,也许你可以捕获事件并调用方法 preventDefault

例如

dataGrid.addDomHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            event.preventDefault();
        }

}, ClickEvent.getType());

可以使用 CSS 作为

getElement().getStyle().setProperty("opacity", "0.6");
getElement().getStyle().setProperty("pointerEvents", "none");

并在再次启用时执行

getElement().getStyle().setProperty("opacity", "1");
getElement().getStyle().setProperty("pointerEvents", "");