DOJO Datagrid 通过按钮删除行

Posted

技术标签:

【中文标题】DOJO Datagrid 通过按钮删除行【英文标题】:DOJO Datagrid remove row via button 【发布时间】:2012-10-19 17:11:23 【问题描述】:

我有一个 DOJO Datagrid 正在运行。它基于 itemFileWriteStore。

通过格式化程序功能,我添加了一个包含 OnClick 功能的按钮

    获取属性“work_id”(在商店中) 进行 Ajax 调用以删除条目 将其从存储中移除并更新网格

这是代码:

    //BUTTON-FORMATTER
     function buttonFormatterRemove()
        var w = new Button(
            label: "Löschen",
            iconClass: "dijitEditorIcon deleteIcon",
            showLabel: false,
            onClick: function() 
                    console.log(this);
                    if (confirm("Datensatz wirklich löschen?"))

                        var item = grid.selection.getSelected();
                        var work_id = grid.store.getValue(item[0], "work_id");
                        //alert(work_id);

                        //FIRE REQUEST
                            request.post("<?php echo site_url('work/delete'); ?>/"+work_id, 

                              ).then(function(text)
                                    if(text ==  1)
                                                console.log("Entry with ID"+work_id+" deleted!")
                                                workStore.deleteItem(item[0]); 
                                                grid.startup();
                                     else alert("Es ist ein Fehler aufgetreten");
                                );     
                              

            
        );
        w._destroyOnRemove=true;
        return w;
    

到目前为止一切都很好......它有效!但只有当我之前点击进入数据网格时。我点击的地方无关紧要。

如果我刷新页面并直接单击按钮,它会抛出:

Uncaught Error: dojo.data.ItemFileWriteStore: Invalid item argument. 

有谁知道如何获取特定行中 work_id 的句柄?

提前感谢您! AFX

【问题讨论】:

【参考方案1】:

我自己解决了这个问题:

我意识到格式化程序有可选参数:

  //BUTTON-FORMATTER
     function buttonFormatterRemove(col, rowIndex)

通过这些参数,我可以掌握该行:

        var rowdata = this.grid.getItem(rowIndex);
        var work_id = rowdata['work_id'];

这篇博文对我帮助很大:http://documentumcookbook.wordpress.com/2010/08/06/dojo-datagrid-combining-field-values-in-formatter/

还是谢谢!

【讨论】:

以上是关于DOJO Datagrid 通过按钮删除行的主要内容,如果未能解决你的问题,请参考以下文章

通过事件处理程序启用 Dojo 按钮

Dojo Datagrid - 以编程方式设置选定行的样式

没有为 dojo 的 DataGrid 触发事件

我想用C#中的datagrid控件做一个删除行(点击按钮删除datagrid中的所指定的任意一行)

将新项目添加到商店后 Dojo Datagrid 排序

单击行材料-ui DataGrid内的按钮时如何设置行数据?