如何包装jqGrid内容?

时间:2013-05-28 05:52:37

标签: jqgrid

我想将内容包装在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进行换行?我也想把第一行加粗。

1 个答案:

答案 0 :(得分:3)

首先,nltobr可以在服务器代码中使用,而不是JavaScript回调方法loadComplete内部将在填充网格后执行。在之后,回调loadComplete将被称为,网格内容将被放置在网格中。如果你想对resultSet数据做一些修改,你应该在之前创建数据的网格

您撰写了有关内容包装的文章,但nltobr的使用情况以及您发布的文字示例表明您在文本中只有新的字符\n。它是

The demo使用您发布的文本,并在文本中包含\n。结果看起来像你想要的

enter image description here

如果您确实需要包装,我建议您阅读以下答案:this onethis onethis 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 "&#160;";
    } 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);
    }
}