0

我正在使用 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');
    }
} 
4

2 回答 2

0

该方法addRowDatasetRowDatasetCell适用于更新本地数据的情况datatype: 'local'。您使用保存 TreeGrid 使用的本地数据datatype: 'json'data_index参数不会在函数中自动更新。我不建议你使用像填充网格这样的低级函数addRowData,尤其是 TreeGrid。如果您确实需要在特殊情况下使用这些功能,则必须在使用或后手动更新data和更新。该方法将为您获取代表现有行的数据(如果存在)。您可以在使用or后更新数据。如果不存在行,您可以使用将数据添加到 TreeGrid_indexaddRowDatasetRowDatasetCellgetLocalRowsetRowDatasetCelladdChildNode该方法不仅将数据添加到 TreeGrid,还更新内部参数data_index.

于 2012-05-07T10:08:54.543 回答
0
oGrid.setGridParam({"datatype":"local"});
oGrid.addRowData(data.id, data, 'after' , arrayDataIDs[ nIndex-2 ] );
oGrid.setGridParam({"datatype":"json"});

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

于 2012-05-08T05:39:47.347 回答