0

以下の形式になる 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);
    }
}

それは機能していません。

2番目のハイペンに基づいてラップする方法はありますか? また、最初の行を太字にしたいと思います。

4

1 に答える 1

3

まず、nltobrはサーバーコードで使用できますが、JavaScript コールバック メソッド内ではなくloadComplete、グリッドを埋めた後に実行されます。グリッド コンテンツがグリッドに配置されたloadComplete、コールバックが呼び出される秒数。データを変更したい場合は、データを含むグリッドが作成されるにこれを行う必要があります。resultSet

コンテンツの折り返しについて書きましたが、nltobr投稿したテキストの例と使用法は、テキスト\n内に改行文字があることを示しています。それは

デモはあなたが投稿したテキストを使用し、テキスト\n内に含まれています。結果はあなたが望むように見えます

ここに画像の説明を入力

テキストの折り返しが本当に必要な場合は、次の回答を読むことをお勧めします: this onethis one、およびthis one

UPDATED : いくつかの列の複数行コンテンツの最初の行を太字にする必要がある場合<strong>は、テキストに挿入できます。jqGrid のオプションを使用しない場合は、jqGrid を作成する前にautoencode: true入力データを変更できます。たとえば、デモは列の内容を変更します。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");
        }
    }
}

別のデモでは、カスタム フォーマッタを使用して同じことを行う方法を示しています。autoencode: truejqGrid のオプションを使用する場合は、このアプローチを使用する必要があります。列のフォーマッタは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);
    }
}
于 2013-05-28T08:51:06.683 に答える