Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dojo Dgrid内联编辑保存另一行_Javascript_Json_Dojo_Editor_Dgrid - Fatal编程技术网

Javascript Dojo Dgrid内联编辑保存另一行

Javascript Dojo Dgrid内联编辑保存另一行,javascript,json,dojo,editor,dgrid,Javascript,Json,Dojo,Editor,Dgrid,我有一个dgrid,它有两列:Name、preducer 每一行都有另一行作为前置行,我将其设置为前置行。行的顺序与此无关 在前置列中,我从列表中选择另一行的名称作为前置 我的问题是,当我在将该行设置为另一行的前置行后更改该行的名称时,它不会自动更改为新名称(这是预期的)。 当然,在手动刷新页面后,我将看到新名称 保存()后,如何在不手动刷新页面或不使用grid.refresh()方法的情况下手动更改所需单元格中的行名称? 例如,在save()函数的回调中设置单元格中的值 我正在使用dojo.s

我有一个dgrid,它有两列:Name、preducer

每一行都有另一行作为前置行,我将其设置为前置行。行的顺序与此无关

在前置列中,我从列表中选择另一行的名称作为前置

我的问题是,当我在将该行设置为另一行的前置行后更改该行的名称时,它不会自动更改为新名称(这是预期的)。 当然,在手动刷新页面后,我将看到新名称

保存()后,如何在不手动刷新页面或不使用grid.refresh()方法的情况下手动更改所需单元格中的行名称? 例如,在save()函数的回调中设置单元格中的值

我正在使用dojo.store.JsonRest。我正在使用grid.save()方法将PUT请求发送到我的存储。最糟糕的是一个PHP页面,它用JSON将响应返回到grin

我的网格如下所示:

    <table id="myGrid" data-dojo-props="query:{param: 'value'}">
    <tr>
    <th data-dgrid-column="editor({field:'name',id:'name',width:175,sortable:false, unhidable:true,formatter:'do_highlight',editor:TextBox,editOn:'dblclick'})">Name</th>
    <th data-dgrid-column="{field:'predecesors', id:'predecesors', width:175, sortable:false,renderCell:milestones.render_predecessor}">Predecessor</th>
    </tr>                                        
    </table> 
this.end_edit = function(event){
    var item = event.grid.store.get(event.cell.row.id);
    item.__edited_field = event.cell.column.field;
    event.grid.updateDirty(event.cell.row.id, field, new_value);
    var def = event.grid.save();
    def.then(null, ajax.show_error);
}

如果有人知道如何刷新特定的单元格,我将不胜感激。我希望避免使用
refresh()
函数,因为它会给我带来错误。

通常需要两件事,网格才能根据存储更改自动更新行:

  • 商店需要被观察到
  • 商店需要有一个查询引擎,以便
    Observable
    知道项目所属的位置
JsonRest
默认情况下不包括
queryEngine
,因为查询引擎通常需要知道在
JsonRest
情况下依赖于服务器行为的信息。然而,在简单的情况下,无论如何都可以使用
dojo/store/util/SimpleQueryEngine
(这是内存默认使用的)

所以你最终会得到这样的结果:

var store = new Observable(new JsonRest({
    target: '...',
    queryEngine: SimpleQueryEngine
}));
如果需要强制其他行重新渲染,可以手动调用
store.put
store.notify
(如果确实要将其发送回服务器,则调用前者,如果只想在UI中更新,则调用后者-notify通常用于允许客户端响应进一步的服务器更新)