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 代码的属性并使用一些预定义的格式化程序,如“数字”或“选择”。因此,您可以设置classstyle属性并同时使用一些与数据包含的对应的预定义格式化程序。看看这个答案background-color,它显示了如何动态设置class另一个答案,它显示了如何设置它style

答案还讨论了这两种方法的优缺点。

对您的代码的另一句话。我不建议您url在表单中使用参数

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

它有两个重要的缺点。首先,$('#hdnStudyDetailId').val()如果$('#hdnStudyDetailId').val()包含一些特殊字符(' ','+','=','ä','д','电',...... )。第二个问题是,在'#hdnStudyDetailId'创建网格时,来自 的值只会被读取一次。因此,在任何刷新网格时,'#hdnStudyDetailId'都将使用元素中相同的旧值,例如按另一列排序、分页等。我建议您阅读答案并使用 URLurlpostData参数:

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