Javascript 我可以更新jqgrid单元格中的图像吗
嗨,我已经通过各种链接来更新单元格值,如 我需要改变的形象,我通过一个自定义的格式化程序,只要用户点击的形象。因此,我使用了onCellSelect事件,通过该事件获取行的数据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
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中),它再现了问题。我可以立即看到问题,调试它,并发布修改过的演示,从而修复了问题。如果你只描述我只能猜测的问题,你会怎么做。例如,您是否使用返回false单击onclick
中的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"
//});
}
}
}