Atata框架是否支持处理首行是表头的特殊表格结构?
报错原因
默认Atata框架的Table控件会将tbody下所有<tr>元素识别为数据行,你的表格将表头行放在tbody首行且内部使用<th>元素,和你定义的列索引绑定的属性定位规则不匹配,因此会触发元素找不到的报错。
可选解决方案
方案1:针对当前表格配置跳过首行
直接在CustomDisplayFields属性上添加[RowFindSettings(SkipRows = 1)]特性,让该表格实例在识别数据行时自动跳过首行,不需要修改行类定义,适合Field行类需要被其他正常表格复用的场景:[RowFindSettings(SkipRows = 1)] public Table<Field, _> CustomDisplayFields { get; private set; } public class Field : TableRow<_> { [FindByColumnIndex(0)] public Text<_> Name { get; private set; } [FindByColumnIndex(1)] public Text<_> Data { get; private set; } }方案2:按类名筛选数据行(更稳定)
你的数据行都带有test-custom-field-row专属类名,可以直接在Field行类上添加类名匹配的查找特性,只会选中符合类名规则的行作为数据行,容错性更高,后续表格新增其他非数据行也不会受影响:public Table<Field, _> CustomDisplayFields { get; private set; } [FindByClass("test-custom-field-row")] public class Field : TableRow<_> { [FindByColumnIndex(0)] public Text<_> Name { get; private set; } [FindByColumnIndex(1)] public Text<_> Data { get; private set; } }方案3:行类全局配置跳过首行
如果所有使用Field行类的表格都固定有首行表头,可以直接在Field类上添加[TableRow(SkipRows = 1)]特性,所有关联的表格都会自动跳过首行:public Table<Field, _> CustomDisplayFields { get; private set; } [TableRow(SkipRows = 1)] public class Field : TableRow<_> { [FindByColumnIndex(0)] public Text<_> Name { get; private set; } [FindByColumnIndex(1)] public Text<_> Data { get; private set; } }
内容的提问来源于stack exchange,提问作者Steve Gray
相关产品推荐
相关产品推荐

