我可以更新jqgrid单元格中的图像

嗨,我已经通过各种链接来更新像这里这样的单元格值

我需要在用户点击图片后立即更改我通过自定义格式化程序放置的图像。 所以,我正在使用onCellSelect事件,我通过这个获取行的数据

var data = $(this).jqGrid('getRowData', row); 

然后我通过这个改变单元格的值 –

 image = "results_not_available.png"; data.colyesno = ""; 

并通过setRowData更新单元格值

 $(this).jqGrid('setRowData', row, data); 

所有其他链接显示这是一个可行的解决方案。 我甚至试图更改任何字符串列,它也不适合我。

我还可以做些什么?

更新:对我来说,setRowData正在设置单元格的标题,而不是值。

1)我如何添加图像 –

我正在使用自定义格式化程序 –

 function resultsImage(cellValue, options, rowdata, action) { var image = ""; if (cellValue == "Y"){ image = "results_available.png"; var imageHtml = ""; return imageHtml; } else if (cellValue == "N"){ image = "results_not_available.png"; var imageHtml = ""; return imageHtml; } } 

所以,在这里,我正在放置一个图像。

在单元格选择上,我正在获取数据并调用函数 –

  onCellSelect: function(row, col, content, event) { var cm = jQuery(grid).jqGrid("getGridParam", "colModel"); columnName = cm[col].name; var data = $(this).jqGrid('getRowData', row); if(columnName == 'col_image') callImage(data,content); $(this).jqGrid('setRowData', row, data); } 

现在我在这里检查一些条件,以便需要应用哪个图像。

 var callImage = function (data,content){ if(condition==true) { ///which is some variable where we make some request to server and it returns backs a variable image = "loading_completed.png"; data.col_image = ""; return data }; else { image = "loading_error.png"; data.col_image = ""; return data }; } 

因此,如果用户点击不在单元格中的图像,那么图像src应该根据条件而改变,并且它的变化应该反映在与旧图像相同的位置。

您可以使用onCellSelect回调的event参数。 event.target将是元素,由用户单击。 以下是代码示例:

 onCellSelect: function (iRow, iCol, content, event) { var cmName = $(this).jqGrid("getGridParam", "colModel")[iCol].name, target = event.target; if (cmName === "col_image" && target.tagName.toUpperCase() === "IMG") { if (condition) { // some kind of testing target.src = "img/loading_completed.png"; target.title = "Click to view data"; // one can use $(target).attr alternatively //$(target).attr({ // src: "img/loading_completed.png", // title: "Click to view data" //}); } else { target.src = "img/loading_error.png"; target.title = "No data available"; // one can use $(target).attr alternatively //$(target).attr({ // src: "img/loading_error.png", // title: "No data available" //}); } } }