1

环境:

1.EasyUI Datagrid
2.jsp(s2sh)
3.mysql 
//until now i can populate the datagrid plugin with json object normally but a 
  small issue.

描述:

我从服务器返回了一个 Json-data-object,如下所示:

{"total":28,"rows":[{"productid":"1","attr":{"size":"10dc","color":"red&yellow"},
                    {"productid":"2","attr":{"size":"102dc","color":"green&null"}

使用插件:

$(document).ready(function(){
      $('#tt').datagrid({  
        url:'loadVerifyStream.eAction',
        pagination:true,
        columns:[[  
                {field:'productid',title:'Product ID',width:100},  
                {field:'?????',title:'Product Size',width:250},  
                {field:'?????',title:'product Color',width:100},
       ]]  

}); });

我无法将“大小”和“颜色”属性输出到网格,我试过了

{field:'attr.size',title:'Product Size',width:250},
{field:'attr.color',title:'product Color',width:100},

没有工作。

有谁知道如何解决这个问题?提前致谢。

//------------------------------------------------------ 我想我想通了这个问题已经。

参考 DataGrid 的 API:

{field:'color',title:'product Color',width:100,
   formatter:function(val,rec){
   return rec.attr == null ? "":rec.attr.color;

}}

4

2 回答 2

3

这是一个更通用的解决方案:

说你的 json 对象如下:

[{id:3,client:{name: "John",city:'New York'},
[{id:4,client:{name: "Paul",city:'Paris'}]

要在您的格式化程序函数中获取字段名称,请使用以下标记:

<table id="dg">
    <thead>  
      <tr>
        <th field="id" width="50">ID</th>
        <th field="not used" formatter="(function(v,r,i){return formatColumn('client.name',v,r,i);})" width="50">Client name</th>
        <th field="not used" formatter="(function(v,r,i){return formatColumn('client.city',v,r,i);})" width="50">Client city</th>
      </tr>  
    </thead>  
</table>

然后定义 formatColumn

function formatColumn(colName, value, row, index) {
    return eval("row."+colName");
}
于 2012-10-17T08:47:06.513 回答
1

或者您可以使用这个 hack(对于 easyui 版本 1.3.1)。在 jquery.easyui.min.js 文件中,转到第 7982 行,应该有以下代码:

cc.push(col.formatter(_5c5,_5c2,_5c1));

并用此代码替换

 cc.push(col.formatter(_5c5,_5c2,_5c1,_5c4));

然后你定义你的格式化程序如下:

function formatColumn(value, row, index, field) {
    // field is the field name defined for this column
    return row[field]; // or anything you want
}
于 2012-11-22T21:52:15.210 回答