1

セルの内容に基づいてセルの背景色を設定したい。

私の最初の質問:xmlデータ内からセルの背景色を設定する方法はありますか?

そうでない場合は、グリッドの定義を次に示します。

$("#grid_sites").jqGrid({
    url:"getgridxmlsites.php?detailid=" + $('#hdnStudyDetailId').val(),
    datatype: "local",
    height: 160,
    width: 832,
    shrinkToFit: true,
    caption:"",
    colNames :["Site","Name","PI","Location","Phone","Status"],
    colModel :[
       {name:"sitenumber",  index:"sitenumber",  width:50,   align:"right"},
       {name:"name",        index:"name",        width:120},
       {name:"location",        index:"location",    width:100},
       {name:"phone",       index:"phone",       width:100},
       {name:"status",      index:"status",      width:70}
    ],
    pager:"pager_sites",
    scroll: 1,
    viewrecords:true,
    sortable:true,
    sortname: "sitenumber",
    autowidth: true,
    pgbuttons: false,
    loadonce: true,
    gridview: true
});

ステータスセルの背景色を内容に応じて変更したい。ステータス列でフォーマッタを使用する必要があることはわかっていますが、そのセルの背景色だけを変更するコードがわかりません。

{name:"status",  index:"status",   width:70, formatter: statusFormatter}

function statusFormatter(cellvalue, options, rowObject)
{
   What exactly would go here for something like this:

   if (cellValue == 'Pending') change the cell's background color to yellow
   else if (cellValue == 'Approved') change the cells's background color to green;
}

ありがとう!

4

1 に答える 1

1

あなたがやりたいことをする方法はたくさんあります。答えには、カスタムフォーマッターを使用して、セルの内容に基づいてセルの背景色を変更する方法の例があります。答えは、属性が導入される前に書かれています。 cellattrカスタムフォーマッタの主な目的は、セルのデータに基づいてセルのHTMLコンテインメントを作成することです。

機能リクエストcellattrの変更として導入された属性には、セルのHTMLコードの属性の設定/変更のみが許可され、「number」や「select」などの事前定義されたフォーマッターを使用できるという利点があります。したがって、データに含まれるデータに対応する事前定義されたフォーマッタを設定または属性付けして同時に使用することができます。動的に設定する方法を示すこの回答と、設定する方法を示す別の回答を見てください。classstylebackground-colorclassstyle

答えは、両方のアプローチの長所と短所をさらに説明します。

コードにもう1つ注意してください。urlフォームでパラメータを使用することはお勧めしません

url:"getgridxmlsites.php?detailid=" + $('#hdnStudyDetailId').val()

これには2つの重要な欠点があります。まず、にいくつかの特殊文字(''、'+'、'='、'ä'、'д'、'電'、..$('#hdnStudyDetailId').val()が含まれている場合、はサーバー上で間違った方法で送信およびデコードされる可能性があります。 $('#hdnStudyDetailId').val())。2番目の問題は'#hdnStudyDetailId'、グリッドの作成時にからの値が1回だけ読み取られることです。したがって、グリッドの更新には、別の列による並べ替え、ページングなど、'#hdnStudyDetailId'要素からの同じ古い値が使用されます。回答を読み、パラメータに関してURLを使用することをお勧めurlpostDataます。

url: "getgridxmlsites.php",
postData: {
    detailid: function() { return $('#hdnStudyDetailId').val(); }
}
于 2011-10-14T16:04:20.017 に答える