From 9e0a8b4efc91363bfefa47e272e7de9f5350332a Mon Sep 17 00:00:00 2001 From: xcmini Date: Fri, 8 Jan 2016 18:27:56 +0800 Subject: [PATCH] fixed the column value is undefined when the row data is a nested json. e.g: {data: {id: 1}}, row[data.id] is undefined, just use row[data][id] to fixed it. --- src/internal.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/internal.js b/src/internal.js index 9b9bba4..a35db0f 100644 --- a/src/internal.js +++ b/src/internal.js @@ -611,10 +611,24 @@ function renderRows(rows) { if (column.visible) { - var value = ($.isFunction(column.formatter)) ? - column.formatter.call(that, column, row) : - column.converter.to(row[column.id]), - cssClass = (column.cssClass.length > 0) ? " " + column.cssClass : ""; + var value = ""; + if($.isFunction(column.formatter)){ + value = column.formatter.call(that, column, row); + }else{ + // 解决JSON嵌套取值为undefinded问题 + var columnId = column.id; + if(columnId.indexOf(".")){ + var columnIds = columnId.split("."); + $.each(columnIds, function(index, id){ + value = (index===0) ? row[id] : value[id]; + }) + }else{ + value = row[column.id]; + } + column.converter.to(value); + } + + var cssClass = (column.cssClass.length > 0) ? " " + column.cssClass : ""; cells += tpl.cell.resolve(getParams.call(that, { content: (value == null || value === "") ? " " : value, css: ((column.align === "right") ? css.right : (column.align === "center") ?