in src/ui/editor/complex/AArrayGrid.tsx [20:67]
element() {
const schema = this.props.schema;
if (!schema.arrayMember) {
return MUtil.error("arrayMember未定义", schema);
}
const members = schema.arrayMember.objectFields // 成员是复杂结构
|| [{ name: undefined, ...schema.arrayMember }]; // 成员是简单结构
// if(!members) {
// return MUtil.error("AArrayGrid只适用于对象数组", schema);
// }
let data = super.getValue();
if (!_.isArray(data)) { // 只接受数组
data = [];
}
const cols = 1 + members.length;
//let headTh = [<td key=":操作栏" width="40px" align="center" style={{backgroundImage: "linear-gradient(to bottom left, transparent calc(50% - 1px), #d3d3d3, transparent calc(50% + 1px))"}}></td>]
let rows = [];
for (let idx = 0; idx < data.length; idx++) {
const i = idx;
rows.push(<tr key={i}>
{/* 各个字段 */}
{
members.map((f, idx) =>
<td key={f.name + idx}>
<MFieldViewer key={this.state.ctrlVersion + "." + f.name} parent={schema} morph={this.props.morph} schema={f} database={data} path={MUtil.jsonPath("[" + i + "]", f.name)} hideBorder={true} afterChange={(path, v, final): void => {
super.changeValueEx(data, false, final);
}} />
</td>)
}
{/* 操作栏 */}
<td key=":option" align="center">
<CaretUpOutlined style={{ display: "block" }} hidden={data.length <= 1} onClick={() => {
if (i === 0) {
message.warn("已经到顶了");
} else {
const prev = data[i - 1];
data[i - 1] = data[i];
data[i] = prev;
super.changeValueEx(data, true, true);
}
}} />