jqGrid показывает значок редактирования для редактирования в строке

Я использую jqGrid с опцией встроенного редактирования. Я хочу показать значок редактирования, если в ячейке нет значений.

Поэтому я пишу форматер:

 function aFormatter(cellvalue, options, row) {
        if(cellvalue == null){          
              return 'you can edit this';
        }else{
            return cellvalue;
        }
 }

you can edit this текст отображается, когда я нажимаю на него, поле ввода отображается правильно, однако поле ввода в качестве начального значенияyou can edit this ?

Как я могу это исправить?

Я использую jqGrid черезstruts 2 jquery tags plugin, который построен на версии jqGrid

Ответы на вопрос(2)

Это покажет значок «изменить» вместо «вы можете редактировать это» в сетке

function aFormatter(cellvalue, options, row) {
   if(cellvalue == null) {          
      return '<span class="ui-icon ui-icon-pencil"></span>'
   } else {
      return cellvalue;
   }
}
 Alireza Fattahi10 авг. 2016 г., 16:11
Та же проблема ... Когда я нажимаю на карандаш, я вижу<span class="ui-icon ui-icon-pencil"></span> на входе
Решение Вопроса

Я думаю, что вы должны определить unformatter (неформат) вместе с форматером. Например,

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();
}

Я не уверен, как вы можете указатьunformat в плагине сетки struts2.

Еще один способ - определить форматтер следующим образом

(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));

Это позволит вам использоватьformatter: "yourFormatterName" (или возможноformatter = "yourFormatterName" в Struts2) так же, как вы можете использоватьстандартные форматеры "integer", "date" и другие.

 Alireza Fattahi13 авг. 2016 г., 17:34
Вы правы, но, поскольку я использую плагин jqGrid с помощью Struts, я не смог найти, где я могу разместить свой код. Я пытаюсь задать его в новом вопросе, может быть, эксперты помогут мне. Спасибо!
 Alireza Fattahi13 авг. 2016 г., 06:33
Спасибо, как вы упомянули, Struts не поддерживает unformatter, и я использовал функцию расширения. но я получаю$.fn.fmatter is undefined, Можете ли вы дать мне знать, как это исправить ?!
 Oleg13 авг. 2016 г., 19:00
@AlirezaFattahi: Добро пожаловать!
 Oleg13 авг. 2016 г., 11:04
@AlirezaFattahi: Вы должны включить кодпосле jqGrid (послеjquery.jqgrid.min.js). Увидетьлиния кода jqGrid, который определяет$.fn.fmatter.

Ваш ответ на вопрос