2012-11-14 63 views
0

我有一個可編輯的網格。當網格加載時,我希望特定列 的所有單元處於編輯模式,即準備好數據捕獲。我試過這個,但它只把最後一個單元格 置於編輯模式。我怎樣才能做到這一點?如何在jqgrid中啓用所有單元格的編輯單元格

function doGridComplete() 
{ 
    var ids = $("#myGrid").jqGrid('getDataIDs'); 
    var grid = $("#myGrid"); 

    var marksColIdx = getColumnIndexByName(grid, 'marksObtained'); 

    var rowId = 1; 
    for(var i = 0; i < ids.length; i++) 
    { 
    //Edit all cells 
    grid.jqGrid('editCell', rowId, marksColIdx, true); 
    rowId++; 
    } 
} 

var getColumnIndexByName = function(gr,columnName) { 
    var cm = gr.jqGrid('getGridParam','colModel'); 
    for (var i=0,l=cm.length; i<l; i++) { 
    if (cm[i].name===columnName) { 
     return i; // return the index 
    } 
    } 
    return -1; 
}; 

我調用該函數doGridComplete()loadCompleteloadComplete : doGridComplete

回答

1

我不建議你這樣做。

如果您在單元格編輯模式下設置每個單元格,哪個優勢將具有網格?網格的加載將非常緩慢。如果某個單元格處於編輯模式下,它將顯示不保存的數據。只有在編輯停止時,單元格纔會被保存。因此,用戶可能會修改數據,並且修改後的值根本不會保存。所以一些改變可以消失。

此外,您將無法使用getCellgetRowData等方法,因爲這些方法不適用於編輯單元格。

所以,如果你實現你所問的問題,你將不得不做很多額外的工作,以使用戶的更改不被丟棄,並且你將有訪問數據的問題。我可以重複我的答案的第一句話:我不建議你這樣做。

+0

你是對的。我希望用戶能夠靈活地爲所有單元格同時輸入所有值,以便我可以一次手動提交所有值。我的一些用戶的互聯網連接性差,因此一次接一個地編輯大約100行將需要更長的時間(即100次訪問服務器),而不是一次輸入所有值並提交一次。這實際上是我這樣做的原因。請,你有什麼建議。 –

+1

@UchennaNwanyanwu:用戶無法同時編輯多個單元格。用戶編輯一個接一個的單元格。如果您不想在修改每個單元格後進行保存,您可以使用*本地編輯*,然後將所有修改的數據發送到服務器。如果你需要本地編輯,你可以先填充* local * grid:'datatype:「local」'或'datatype:「json」'和'localonce:true'。然後你可以使用'cellsubmit:「clientArray」'(在單元格編輯的情況下)。此外,您可以提供「發送到服務器」按鈕,它可以通過'getGridParam(「data」)獲得所有本地數據*並將其發送到服務器。 – Oleg

+0

非常感謝。我認爲這樣更好。 –

相關問題