我想将内容包装在jqGrid中,该内容将采用以下格式
Input string
2013/05/28 10:54 - Default - Subject A Task added
Output String
2013/05/28 10:54 - Default
Subject A Task added
以下是我在屏幕上显示内容的代码
jQuery("#message").jqGrid({
datatype : "local",
data : resultSet,
height :250,
width : 960,
sortable : false,
ignoreCase : true,
sortorder : "desc",
colNames : [''],
colModel : [ {
name : 'content',
index : 'content',
width : '10%',
align : 'center',
sortable : false,
search : false
}],
rowList:[10,20,30],
pager : '#pager',
rowNum : 10,
altRows : true,
altclass:"myclass",
viewrecords : true,
});
我试过像这样的nltobr
loadComplete : function() {
for (var i = 0; i < resultSet.length; i++) {
resultSet[i].messageContent = nl2br(resultSet[i].messageContent);
}
}
这不起作用。
有没有办法根据第二个hipen进行换行?我也想把第一行加粗。
答案 0 :(得分:3)
首先,nltobr可以在服务器代码中使用,而不是JavaScript回调方法loadComplete
内部将在填充网格后执行。在之后,回调loadComplete
将被称为,网格内容将被放置在网格中。如果你想对resultSet
数据做一些修改,你应该在之前创建数据的网格
您撰写了有关内容包装的文章,但nltobr
的使用情况以及您发布的文字示例表明您在文本中只有新的字符\n
。它是
The demo使用您发布的文本,并在文本中包含\n
。结果看起来像你想要的
如果您确实需要包装,我建议您阅读以下答案:this one,this one和this one。
更新:如果您需要将某些列的第一行多行内容设为粗体,则可以在文本中插入<strong>
。如果您不使用jqGrid的autoencode: true
选项,则可以在创建jqGrid之前修改输入数据。例如,the demo修改了note
列的内容:
var i, str, a;
for (i = 0; i < mydata.length; i++) {
str = mydata[i].note;
if (typeof str === "string") {
a = str.split("\n");
if (a.length > 1) {
a[0] = "<strong>" + a[0] + "</strong>";
mydata[i].note = a.join("\n");
}
}
}
Another demo演示如何使用自定义格式化程序来执行相同操作。如果使用jqGrid的autoencode: true
选项,则应使用该方法。 note
列的格式化程序在演示中定义为
formatter: function (value) {
var a;
if (value == null || value === "") {
return " ";
} else if (typeof value === "string") {
a = value.split("\n");
if (a.length > 1) {
a[0] = "<strong>" + a[0] + "</strong>";
return a.join("\n");
} else {
return $.jgrid.htmlEncode(value);
}
} else {
return $.jgrid.htmlEncode(value);
}
}