DOJO Datagrid通过按钮删除行

时间:2012-10-30 11:08:45

标签: select button datagrid dojo store

我有一个DOJO Datagrid启动并运行。它基于itemFileWriteStore。

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

  1. 获取属性“work_id”(它在商店中)
  2. 进行Ajax调用以删除条目
  3. 将其从商店中删除并更新网格
  4. 以下是代码:

        //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 个答案:

答案 0 :(得分:3)

我能够自己解决这个问题:

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

  //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/

非常感谢!