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