getLocalRow在jqgrid邻接树模型中返回旧值

时间:2012-05-07 07:08:55

标签: jquery jqgrid

我正在使用JqGrid的addRowData方法将服务器中的行添加到网格中。

如果我使用getLocalRow方法,我看到的值是旧的,而不是更新的值。但是,如果我看到值更新的元素,为什么会发生这种情况?

以下是colmodel属性

        url  :  '/pots/getTasks.htm?id='+projectId,
        datatype  :  'json',
        mtype  :  'GET',
        colNames  : userColNames ,
        colModel  :  userColModel,
        pager: '#divTaskPager',
        treeGridModel:'adjacency',
        treeGrid: true,
        cellEdit: true,
        sortable: false,
        gridview:true,
        loadui:'block',


oGrid.addRowData(data.id, data, 'first' );

data是我从服务器获取的数据,格式为{“col1”:“value1”,“col2”:“value2”...}

nIndex = oGrid.getInd( data.id );
if( nIndex != 1 )
{
    oGrid.addRowData(data.id, data, 'after' , arrayDataIDs[ nIndex-2 ] );
    var obj = oGrid.getLocalRow(data.id);
    oGrid.setCell(data.id, 'listTaskAssignment', ormattedResources,'','',true);
    if( data.isCompleted == true || data.isCompleted == "true" )
    {        
        pots.utility.changeEditable($("#tree"),true,data.id);                               $('#'+parseInt(data.id)+' > [aria-describedby="tree_cb"]').children().attr('checked',false).attr('disabled','disabled');
    }
}
else
{
    oGrid.addRowData(data.id, data, 'first' );
    oGrid.setCell(data.id, 'listTaskAssignment', formattedResources,'','',true);
    if( data.isCompleted == true || data.isCompleted == "true" )
    {
        pots.utility.changeEditable($("#tree"),true,data.id);
        $('#'+parseInt(data.id)+' > [aria-describedby="tree_cb"]').children().attr('checked',false).attr('disabled','disabled');
    }
} 

2 个答案:

答案 0 :(得分:0)

方法addRowDatasetRowDatasetCell仅针对案例datatype: 'local'更新本地数据。您使用datatype: 'json',因此包含TreeGrid使用的本地数据的data_index参数将自动更新功能。我不建议你使用像addRowData这样的低级函数来填充网格,尤其是TreeGrid。如果您确实需要使用特殊情况下的功能,则必须在使用data_indexaddRowData后手动更新setRowDatasetCell。方法getLocalRow将为您提供表示现有行的数据(如果存在)。您可以在使用setRowDatasetCell后更新数据。如果不存在行,则可以使用addChildNode方法将数据添加到TreeGrid,该方法不仅会将数据添加到TreeGrid,还会更新内部参数data_index

答案 1 :(得分:0)

oGrid.setGridParam({"datatype":"local"});
oGrid.addRowData(data.id, data, 'after' , arrayDataIDs[ nIndex-2 ] );
oGrid.setGridParam({"datatype":"json"});

我发现我可以通过将grid属性数据类型更改为local并添加一行然后将数据类型设置回json来更新本地数组