I am using the jqGrid with inline editing option. I want to show an edit icon if the cell does not have any values.
So I write a formatter:
function aFormatter(cellvalue, options, row) {
if(cellvalue == null){
return 'you can edit this';
}else{
return cellvalue;
}
}
The you can edit this text is displayed, when I click on it an input box is displayed correctly, however the input box as the initial value you can edit this ?
How can I fix it?
I am using the jqGrid through struts 2 jquery tags plugin, which is build on jqGrid version
I think that you should define unformatter (unformat) together with the formatter. For example,
formatter: function (cellvalue) {
if (cellvalue == null) {
return "<span class='ui-icon ui-icon-pencil'></span>";
} else {
return cellvalue;
};
},
unformat: function (cellValue, options, elem) {
return $(elem).text();
}
I'm not sure how you can specify unformat in the struts2 grid plugin.
One more way would be defining formatter in the following way
(function ($) {
"use strict";
/*jslint unparam: true */
$.extend($.fn.fmatter, {
yourFormatterName: function (cellValue, options) {
if (cellvalue == null) {
return "<span class='ui-icon ui-icon-pencil'></span>";
} else {
return cellvalue;
};
}
});
$.extend($.fn.fmatter.yourFormatterName, {
unformat: function (cellValue, options, elem) {
return $(elem).text();
}
});
}(jQuery));
It will allows you to use formatter: "yourFormatterName" (or probably formatter = "yourFormatterName" in struts2) in the same way like you can use standard formatters "integer", "date" and other.
This will show an "edit" icon instead of "you can edit this" in the grid
function aFormatter(cellvalue, options, row) {
if(cellvalue == null) {
return '<span class="ui-icon ui-icon-pencil"></span>'
} else {
return cellvalue;
}
}
来源:https://stackoverflow.com/questions/38875186/jqgrid-show-an-edit-icon-for-in-line-editing