2012-05-07 54 views
0

我正在使用JqGrid的addRowData方法將服務器中的行添加到網格中。getLocalRow在jqgrid鄰接樹模型中返回舊值

如果我使用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」:「值1」,「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'); 
    } 
} 
+0

爲什麼你使用現在還不清楚FR我'addRowData'方法更新本地陣列將數據添加到您從服務器**獲取**的TreeGrid。無論如何填充TreeGrid是您的主要問題。所以你應該包括你在你的問題中使用的代碼。 – Oleg

+0

使用addRowData將行添加到樹網格時會出現什麼問題?請解釋 – pavi

+0

getRowData給我更新的行但不getLocalRow !!!如果我看到使用mozilla firebug的行,我看到更新的行,我認爲本地數組沒有更新如何更新本地數組? – pavi

回答

0

方法addRowData,只對案件datatype: 'local'setRowDatasetCell更新本地數據。您使用datatype: 'json',所以data_index參數保存本地數據由TreeGrid使用將自動更新而不是功能。我不建議您使用像addRowData這樣的低級函數來填充網格,特別是TreeGrid。如果您確實需要使用特殊情況下的功能,則必須在使用addRowData,setRowDatasetCell後手動更新data_index。方法getLocalRow將爲您提供表示現有行(如果存在)的數據。您可以在使用setRowDatasetCell後更新數據。如果不存在行,則可以使用addChildNode方法將數據添加到TreeGrid,該方法不僅將數據添加到TreeGrid,還更新內部參數data_index

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

我發現,我可以通過更改網格屬性數據類型本地和添加行,然後設置數據類型回JSON