Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以更新jqgrid单元格中的图像吗_Javascript_Jquery_Jqgrid - Fatal编程技术网

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

Javascript 我可以更新jqgrid单元格中的图像吗,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,嗨,我已经通过各种链接来更新单元格值,如 我需要改变的形象,我通过一个自定义的格式化程序,只要用户点击的形象。因此,我使用了onCellSelect事件,通过该事件获取行的数据 var data = $(this).jqGrid('getRowData', row); 然后我用这个来改变单元格的值- image = "results_not_available.png"; data.colyesno = "<img title ='Detail data not available' s

嗨,我已经通过各种链接来更新单元格值,如

我需要改变的形象,我通过一个自定义的格式化程序,只要用户点击的形象。因此,我使用了onCellSelect事件,通过该事件获取行的数据

var data = $(this).jqGrid('getRowData', row);
然后我用这个来改变单元格的值-

image = "results_not_available.png";
data.colyesno = "<img title ='Detail data not available' src='img/" + image + "' />";
所有其他链接都表明这是一个可行的解决方案。我甚至试图改变任何字符串列,它也不适合我

我还能做什么

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

1) 如何添加图像-

我正在为此使用自定义格式化程序-

function  resultsImage(cellValue, options, rowdata, action) {
        var image = "";
        if (cellValue == "Y"){
            image = "results_available.png";
            var imageHtml = "<img class=pointer title ='Detail data available. Click to request for data' src='img/" + image + "' />";
            return imageHtml;
        }       
        else if (cellValue == "N"){
            image = "results_not_available.png";
            var imageHtml = "<img title ='Detail data not available' src='img/" + image + "' />";
            return imageHtml;
        }

    }
现在,我正在检查一些条件,以便将图像应用到哪个条件

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 = "<img title ='Click to view data' src='img/" + image + "' />";
      return data
      };
    else {
      image = "loading_error.png";
      data.col_image = "<img title ='No data available' src='img/" + image + "' />";
      return data
      };
    }
var callImage=函数(数据、内容){
如果(condition==true){///这是一个变量,我们向服务器发出一些请求,它返回一个变量
image=“加载_completed.png”;
data.col_image=“”;
返回数据
};
否则{
image=“loading_error.png”;
data.col_image=“”;
返回数据
};
}

因此,如果用户单击不在单元格中的图像,则图像src应根据条件进行更改,并且其更改应反映在与旧图像相同的位置。

您可以使用
onCellSelect
回调的
事件
参数<代码>事件。目标将是元素,由用户单击。下面是代码示例:

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"
            //});
        }
    }
}

例如,您可以设置
src
属性。您能否将当前的
onCellSelect
回调代码发布,我将对其进行修改,使其不使用
setRowData
?如果用户单击旧图像,或者如果用户单击单元格内的某个位置(其中包含
img
),是否希望更改图像,但是在
?@Oleg中使用另一个
src
,我已经用要求更新了这个问题谢谢先生:)我使用target.onclick事件在新图像上定义单击事件,但现在每次它都再次运行相同的onCellSelect代码again@shv22:不客气!如果您需要,我可以帮助您始终提供演示(在JSFIDLE中),它再现了问题。我可以立即看到问题,调试它,并发布修改过的演示,从而修复了问题。如果你只描述我只能猜测的问题,你会怎么做。例如,您是否使用
返回falseonclick
中的code>?您可以调用
event.preventDefault()
。您可以在选择行之前使用
,而不是在单元格选择之前使用
。。。我只能猜测你到底做了什么,问题的原因是什么。先生,我已经在这里做了演示。我的问题是,如果我定义了target.onclick事件,即使图像发生更改,它也会被调用。只能在用户单击新图像后调用它。@shv22:对不起,我不明白设置
onclick
的目的。您目前对onclick拥有完全控制权:
onCellSelect
将在这种情况下完全执行。为什么您不能将
oneAlert
anotherAlert
中的所有代码直接放在
onCellSelect
中?第一个图像显示,如果用户单击图像,现在数据可用。我们检查是否可以从服务器获取数据。在此基础上,我们将更改图像和标题。现在,用户再次单击以下载数据。所以,它不能第一次运行。用户需要再次单击,这就是为什么我需要另一个onclick事件,以便能够获取报告
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 = "<img title ='Click to view data' src='img/" + image + "' />";
      return data
      };
    else {
      image = "loading_error.png";
      data.col_image = "<img title ='No data available' src='img/" + image + "' />";
      return data
      };
    }
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"
            //});
        }
    }
}