【问题标题】:Showing Edit / Delete buttons for each row in a GWT CellTable?显示 GWT CellTable 中每一行的编辑/删除按钮?
【发布时间】:2014-03-20 10:52:40
【问题描述】:

我有一个显示一些数据的单元格表。对于每一行,我想要两列包含编辑/删除按钮。单击每个按钮时,它应该能够通知侦听器单击了哪个按钮(并且最好还能够传入与该行关联的对象)。

我该怎么做?具体来说,我知道如何渲染一个按钮,但是如何处理点击事件并传入用户点击编辑或删除的对象?

【问题讨论】:

    标签: java gwt celltable


    【解决方案1】:

    这是标准方法:

    myTable.addCellPreviewHandler(new Handler<MyObject>() {
    
        @Override
        public void onCellPreview(CellPreviewEvent<MyObject> event) {
            if ("click".equals(event.getNativeEvent().getType())) {
                if (event.getColumn() == 0 || event.getColumn() == 1) {
                    MyObject object = event.getValue();
                    Window.alert("Column clicked: " + event.getColumn());
                }
            }
        }
    
    });
    

    这是一种更有效的解决方案,因为您只有一个处理程序附加到一个表,而不是尝试将一个处理程序附加到每一行中的每个按钮。

    【讨论】:

    • 这可能会在单击该行的任意位置时触发,对吧?我希望它仅在单击某些按钮时触发
    • 添加支票。我会更新答案。请注意,本机事件由浏览器触发。在这里你只检查这是否是你需要的事件。
    • 谢谢,另一个问题.. 如果用户单击删除按钮,并且给定的行被删除了怎么办。在这种情况下,我将如何将此信息推送到表格中,以使其停止显示该行?
    • 您只需从 displayItems() 或您在 ListDataProvider 中用作列表的任何对象中删除此对象。
    • 我正在使用异步提供程序。在这种情况下我该如何删除它?我可以要求它再次请求物品吗?
    【解决方案2】:

    我认为您可以通过 celltable 中的所有行进行 foreach(我从未使用过 celltables)
    然后您可以将自己的 ClickHandler 添加到 Button。 类似的东西(未测试):

    final int row = myrow; // add the row value or a object identifier or similar 
    Button delete_button = new Button("delete");
        delete_button.addClickHandler(new ClickHandler(){
        @Override
        public void onClick(ClickEvent event) {
            // Insert your delete funciton
            delete(row);
       }
    });
    

    你提到了一个 Listener,Listener 被贬低了,改用 Handler。

    【讨论】:

    • 看,单元格表的要点是,您使用 html 字符串呈现按钮,而不是使用 Button 小部件,并将其写入 innerHtml。所以我不认为添加这样的事件处理程序或制作这样的小部件会起作用。
    • 如果你知道 Button 的 ID,你可以这样做: Button mybutton = Button.wrap(DOM.getElementById("Button ID")); mybutton.addClickHandler(myHandler);这应该将现有按钮包装成呈现的 HTMLstring
    • 这也有点违背了目的,因为使用 CellTable 的目的是使用 html 字符串拥有轻量级表格,而不需要小部件。我看一下ButtonCell的源码,因为它提供了点击处理机制,看看它是怎么做的。
    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 2011-11-05
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多