diff --git a/docs/table/index.md b/docs/table/index.md index 13adfece..65b32793 100644 --- a/docs/table/index.md +++ b/docs/table/index.md @@ -29,6 +29,7 @@ toc: true | [table.reloadData(id, options, deep)](#table.reloadData) 2.7+ | 表格数据重载。 | | [table.renderData(id)](#table.renderData) 2.8.5+ | 重新渲染数据。 | | [table.updateRow(id, opts)](#table.updateRow) 2.9.4+ | 更新指定行数据。 | +| [table.updateTotalRow(id, totalRowData)](#table.updateTotalRow) 2.9.4+ | 更新合计行。 | | [table.checkStatus(id)](#table.checkStatus) | 获取选中行相关数据。 | | [table.setRowChecked(id, opts)](#table.setRowChecked) 2.8+ | 设置行选中状态。 | | [table.getData(id)](#table.getData) | 获取当前页所有行表格数据。 | @@ -356,7 +357,7 @@ table.updateTotalRow('test', function(field, columnValues, tableData){ | --- | --- | --- | --- | | index | 行下标 | number | - | | row | 行数据 | object | - | -| related | 是否更新其他包含自定义模板且可能有所关联的列视图 | boolean | - | +| related | 是否更新其他包含自定义模板且可能有所关联的列视图 | boolean/function | - | 该方法用于更新指定行数据。 @@ -375,6 +376,10 @@ table.updateRow('test', { id: 1, username: 'name' } + // 是否更新关联的列视图 + related: function(field, index){ + return ['score', '5'].indexOf(field) !== -1; + } }); ``` diff --git a/src/modules/table.js b/src/modules/table.js index fdeaa123..379a428c 100644 --- a/src/modules/table.js +++ b/src/modules/table.js @@ -1914,7 +1914,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ * @typedef updateRowOptions * @prop {number} index - 行索引 * @prop {Object.} row - 行数据 - * @prop {boolean} [related] - 更新其他包含自定义模板且可能有所关联的列视图 + * @prop {boolean | ((field, index) => boolean)} [related] - 更新其他包含自定义模板且可能有所关联的列视图 */ /** * 更新指定行 @@ -1953,9 +1953,10 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ }, data) })); td.data("content", value); + that.renderFormByElem(cell); } // 更新其他包含自定义模板且可能有所关联的列视图 - else if (related && (item3.templet || item3.toolbar)) { + else if ((typeof related === 'function' ? related(String(item3.field || i), i) : related) && (item3.templet || item3.toolbar)) { var thisTd = tr.children('td[data-field="' + (item3.field || i) + '"]'); var content = data[item3.field]; var thisCell = thisTd.children(ELEM_CELL); @@ -1968,11 +1969,10 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ }, data) })); thisTd.data("content", content); + that.renderFormByElem(thisCell); } }); }); - - that.renderFormByElem(tr); } layui.each(opts, function(i, opt){