Jquery jqgrid不显示特殊符号

Jquery jqgrid不显示特殊符号,jquery,jqgrid,Jquery,Jqgrid,我需要jqgrid在一些列中显示一些特殊字符,如“”,尝试使用autoencode=true,但它将所有列都更改为HTML编码,就像我在其他一些不需要编码的列中有按钮一样,我们可以为特定列设置autoencode吗?有什么想法吗 编辑:我使用了oleg建议的格式化程序,但我遇到了一个问题,我在cols中有按钮,我需要在编辑模式到“保存”、“保存并完成”和“取消”之间切换。我正在发布代码,但我不确定如何在编辑模式下在隐藏/取消隐藏按钮之间切换: 网格设置: $("#list

我需要jqgrid在一些列中显示一些特殊字符,如“
”,尝试使用
autoencode=true
,但它将所有列都更改为HTML编码,就像我在其他一些不需要编码的列中有按钮一样,我们可以为特定列设置autoencode吗?有什么想法吗

编辑:我使用了oleg建议的格式化程序,但我遇到了一个问题,我在cols中有按钮,我需要在编辑模式到“保存”、“保存并完成”和“取消”之间切换。我正在发布代码,但我不确定如何在编辑模式下在隐藏/取消隐藏按钮之间切换:

网格设置:

            $("#list").jqGrid({
            url: '<%= Url.Action("JSONData","CompanyInfo")%>',
            datatype: 'json',
            colNames: ['ID', 'Company', 'Address' , 'Employers ', ''],
            colModel: [
                { name: 'ID', index: 'ID', align: 'left', sortable: false, editable: true, hidden: true },
                { name: 'Company', index: 'Company', align: 'left', sortable: false, editable: false, formatter: ConvertLineChartoBR },
                { name: 'Address', index: 'Address', editoptions: { size: 100 }, align: 'left', sortable: false, editable: true, edittype: 'textarea', formatter: ConvertLineChartoBR, unformat: ConvertLineChartoN }, 
                { name: 'Employers', index: 'Employers', editoptions: { size: 100 }, align: 'left', sortable: false, editable: true, edittype: 'textarea' },
                { name: 'act', index: 'act', editable: false, sortable: false, fixed: true, formatter: setupEdit}],
            pager: $('#pager'),
            autowidth: true,
            shrinkToFit: true,
            rowNum: currRecords,
            rowList: [5, 10, 20, 50],
            recordtext: "View Records {0} - {1} of {2}",
            emptyrecords: "No records to view",
            pgtext: "Page {0} of {1}",
            sortorder: "desc",
            viewrecords: true,
            autoencode: true,
            caption: 'Test'
        });

对于被解释为HTML标记的
尝试HTML实体
。您只需将
<和>
更改为
。。如果您使用php,htmlspecialchars函数将帮助您做到这一点。但我相信大多数语言中都有类似的函数。

不幸的是,您不能仅为一列设置
autoencode:true

我认为,真正的问题在于,您在创建按钮的列中以错误的方式放置HTML标记。可能您将HTML标记作为数据的一部分,这是不好的。更好的方法是使用。在这种情况下,您应该只将格式化程序可以使用的数据(例如,作为按钮的文本)放入按钮列的JSON输入中。如果按钮需要相同的文本,则按钮列的数据可以为空。比如说

formatter: function () {
    return "<span class='ui-icon ui-icon-plus'></span>";
}
它帮助您按列获取
colModel
中列的索引。例如,使按钮看起来与您可以使用的jQuery UI样式相对应

loadComplete: function () {
    var iAct = getColumnIndexByName ($(this), 'act');
    $(this).find("tbody>tr.jqgrow>td:nth-child(" + (iAct + 1) +
        ")>input[type='button']").button();
}
让我们您知道rowid,并希望获得您放置在“act”列中的按钮。然后你需要从那里展示一些或者隐藏另一些。您可以使用以下代码片段:

var iAct = getColumnIndexByName ($(this), 'act'),
    $td = $('#' + $.jgrid.jqID(rowid) + ">td:nth-child(" + (iAct + 1) + ")"),
    $save = $td.find(">input[value='Save']"),
    $saveAndFinish = $td.find(">input[value='Save & Finish']"),
    $cancel = $td.find(">input[value='Cancel']"),
    $edit = $td.find(">input[value='Edit']");
$save.show();
$saveAndFinish.show();
$cancel.show();
$edit.hide();
我建议您使用带有工具提示的图标,而不是按钮中的文本来保存网格中的位置。


“您还必须用PHP对字符串进行utf8编码。”

谢谢。我可以这样设置,没有问题。但是,在编辑模式下,编辑按钮需要替换为保存和取消按钮。我是用setRowData做的。现在看来我不能再用了。关于如何修复此问题有何建议?@remo为什么不使用预定义的
格式化程序:“操作”
?它能满足你的需要。如果您确实需要自己实现相同的功能,您可以在格式化程序中添加许多按钮,但其中的一些按钮应该是隐藏的:““然后,您可以显示需要显示和隐藏不需要的按钮。与格式化程序相同:“操作”
。我不能使用预定义的操作,因为我在编辑模式下有更多按钮要添加。我将尝试执行多个按钮,一些显示,另一些隐藏。ThanksHow切换时是否可以取消隐藏和隐藏按钮?我可以访问object的值吗?看起来我无法在中设置setRowDataOnEditFunc@remo:这取决于实施情况。您应该发布您使用的代码。欢迎使用堆栈溢出!!请在评论中发布可能重复的内容,即“可能重复:”(点击问题共享以获得链接)。非常感谢。
var getColumnIndexByName = function (grid, columnName) {
        var cm = grid.jqGrid('getGridParam', 'colModel'), i, l = cm.length;
        for (i = 0; i < l; i++) {
            if (cm[i].name === columnName) {
                return i; // return the index
            }
        }
        return -1;
    };
loadComplete: function () {
    var iAct = getColumnIndexByName ($(this), 'act');
    $(this).find("tbody>tr.jqgrow>td:nth-child(" + (iAct + 1) +
        ")>input[type='button']").button();
}
var iAct = getColumnIndexByName ($(this), 'act'),
    $td = $('#' + $.jgrid.jqID(rowid) + ">td:nth-child(" + (iAct + 1) + ")"),
    $save = $td.find(">input[value='Save']"),
    $saveAndFinish = $td.find(">input[value='Save & Finish']"),
    $cancel = $td.find(">input[value='Cancel']"),
    $edit = $td.find(">input[value='Edit']");
$save.show();
$saveAndFinish.show();
$cancel.show();
$edit.hide();