2012-11-14 61 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

非常感谢。我认为这样更好。 –

相关问题