我们可以根据某些表达式或条件更改 domino-ui 数据表行的背景颜色吗?例如,如果 DueDate < Today.
,则将行背景设置为红色Domino-ui 数据表有一个内置的插件叫做Marker plugin,可以有条件地用不同的颜色标记行,该插件将颜色作为边框添加到行的左边框
您可以在 domino-ui 演示中找到示例here
如果这还不够,您可以创建自己的插件,就像这样
import elemental2.dom.HTMLTableRowElement;
import org.dominokit.domino.ui.datatable.DataTable;
import org.dominokit.domino.ui.datatable.TableRow;
import org.dominokit.domino.ui.datatable.plugins.DataTablePlugin;
public class RowColorPlugin<T> implements DataTablePlugin<T> {
@Override
public void onRowAdded(DataTable<T> dataTable, TableRow<T> tableRow) {
T record = tableRow.getRecord();
HTMLTableRowElement row = tableRow.element();
// Add css classes or set css properties in the row element based on the row record to change the row colors
}
}
这是一个展示如何使用自定义插件的示例
TableConfig<Contact> tableConfig = new TableConfig<>();
tableConfig
.addColumn(ColumnConfig.<Contact>create("id", "#")
.textAlign("right")
.asHeader()
.setCellRenderer(cell -> TextNode.of(cell.getTableRow().getRecord().getIndex() + 1 + "")))
.addColumn(ColumnConfig.<Contact>create("status", "Status")
.textAlign("center")
.setCellRenderer(cell -> {
if (cell.getTableRow().getRecord().isActive()) {
return Style.of(Icons.ALL.check_circle()).setColor(Color.GREEN_DARKEN_3.getHex()).element();
} else {
return Style.of(Icons.ALL.highlight_off()).setColor(Color.RED_DARKEN_3.getHex()).element();
}
}))
.addColumn(ColumnConfig.<Contact>create("firstName", "First name")
.setCellRenderer(cell -> TextNode.of(cell.getTableRow().getRecord().getName())))
.addColumn(ColumnConfig.<Contact>create("gender", "Gender")
.setCellRenderer(cell -> ContactUiUtils.getGenderElement(cell.getRecord()))
.textAlign("center"))
.addColumn(ColumnConfig.<Contact>create("eyeColor", "Eye color")
.setCellRenderer(cell -> ContactUiUtils.getEyeColorElement(cell.getRecord()))
.textAlign("center"))
.addColumn(ColumnConfig.<Contact>create("balance", "Balance")
.setCellRenderer(cellInfo -> ContactUiUtils.getBalanceElement(cellInfo.getRecord())))
.addColumn(ColumnConfig.<Contact>create("email", "Email")
.setCellRenderer(cell -> TextNode.of(cell.getTableRow().getRecord().getEmail())))
.addColumn(ColumnConfig.<Contact>create("phone", "Phone")
.setCellRenderer(cell -> TextNode.of(cell.getTableRow().getRecord().getPhone())))
.addColumn(ColumnConfig.<Contact>create("badges", "Badges")
.setCellRenderer(cell -> {
if (cell.getTableRow().getRecord().getAge() < 35) {
return Badge.create("Young")
.setBackground(ColorScheme.GREEN.color()).element();
}
return TextNode.of("");
}));
tableConfig.addPlugin(new RowColorPlugin<>(tableCellInfo -> ContactUiUtils.getBalanceColor(tableCellInfo.getRecord())));
LocalListDataStore<Contact> localListDataStore = new LocalListDataStore<>();
DataTable<Contact> defaultTable = new DataTable<>(tableConfig, localListDataStore);
localListDataStore.setData(contactsList);