2012-03-15 65 views
0

这个问题可能已经被问过很多次了,但我想知道是否可以动态更改jqgrid的单元格值?有没有办法来动态更改jqGrid的单元格值?

我基本上有一个网格,它正在通过JSon字符串加载数据。在特定列的某些行上,该值可能为“空”。因此,知道哪个行ID是一个问题,然后能够将该“空”改变为其他的。例如。将“空”更改为“不适用”。

所有帮助将不胜感激。谢谢。

+0

哪种格式具有JSON数据?你使用了一些'jsonReader'还是使用[标准格式](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data)?为了能够修改JSON数据,必须知道输入数据的格式。如何发送'null':作为'null'还是''null''? – Oleg 2012-03-15 14:52:31

回答

2

我不认为改变价值就是你在这种情况下真正需要的。你应该创建你自己的custom formatter。它看起来更不像是:

var nullFormatter = function(cellvalue, options, rowObject) { 
    if (cellValue == null) 
     return "Not Applicable"; 
    else 
     return cellValue; 
}; 

这只是非常基本的,简单的实现,但它应该给你一个想法。

+0

得到它的工作。操作在服务器端而不是客户端。谢谢反正...... – pundit 2012-03-15 14:58:22

+1

@pundit:为什么你花时间给其他人,问你自己的问题,如果你自己有解决方案** 8分钟**你发布问题后? – Oleg 2012-03-15 15:17:38

3

我会建议你使用beforeProcessing回调,它使用简单,功能强大。例如,如果你在the standard JSON format

{ 
    "total": "xxx", 
    "page": "yyy", 
    "records": "zzz", 
    "rows" : [ 
     {"id": "1", "cell": ["cell11", "null", "cell13"]}, 
     {"id": "2", "cell": ["cell21", "cell22", null]}, 
     ... 
    ] 
} 

来自服务器的数据,你可以这样做以下

beforeProcessing: function (data) { 
    var rows = data.rows, cRows = rows.length, row, iRow, cCol, iCol, cell; 
    for (iRow = 0; iRow < cRows; iRow++) { 
     row = rows[iRow].cell; 
     for (iCol = 0, cCol = row.length; iCol < cCol; iCol++) { 
      cell = row[iCol]; 
      if (cell === null || cell === "null") { 
       row[iCol] = "Not Applicable"; 
      } 
     } 
    } 
} 

你可以修改数据从服务器数据之前返回的路上将由jqGrid处理。

相关问题