如何在v-data-table中突出显示所选行?我试图通过在Example
中添加标志变量selected
来修改数据
在上面的示例中,单击一行将通过添加名为primary的类来突出显示。如果它是静态数据,则工作正常,但如果它是动态数据,例如从API获取数据,则如果我更改了分页和排序等所有内容,则数据表中的数据将始终被刷新。
例如,在我的情况下,如果我对列进行排序,则数据将来自API,而v-data-table中的数据将被排序后的数据刷新,在这种情况下,很难维持{{ 1}}每次数据更改时都进行标记。还有其他方法来突出显示所选行吗?
答案 0 :(得分:7)
import spark.sqlContext.implicits._
import java.sql.Timestamp
import org.apache.spark.sql.functions.typedLit
scala> val stamp = typedLit(new Timestamp(1580105949000L))
stamp: org.apache.spark.sql.Column = TIMESTAMP('2020-01-27 00:19:09.0')
scala> var df_test = Seq(5).toDF("seq").select(
| stamp.as("unixtime"),
| date_trunc("HOUR", stamp).as("date_trunc"),
| date_format(date_trunc("HOUR", stamp), "yyyy-MM-dd hh:mm:ss").as("hour")
| )
df_test: org.apache.spark.sql.DataFrame = [unixtime: timestamp, date_trunc: timestamp ... 1 more field]
scala> df_test.show
+-------------------+-------------------+-------------------+
| unixtime| date_trunc| hour|
+-------------------+-------------------+-------------------+
|2020-01-27 00:19:09|2020-01-27 00:00:00|2020-01-27 12:00:00|
+-------------------+-------------------+-------------------+
或
<v-data-table @click:row="rowClick" item-key="name" single-select ...
methods: {
rowClick: function (item, row) {
row.select(true);
//item.name - selected id
}
}
<style>
tr.v-data-table__selected {
background: #7d92f5 !important;
}
</style>
答案 1 :(得分:1)
您的解决方案不起作用,因为在单击行时将selected
属性添加到数据中,但是当重新加载数据时,没有selected
属性的数据将替换旧数据。 / p>
要使其正常工作:
-将id
字段添加到甜点列表中的每个项目
-将默认值为-1的selectedId
添加到您的数据中
-将方法activerow
中的代码行更改为this.selectedId = item.id;
-将<tr>
中的class属性更改为:class="{'primary': props.item.id===selectedId}"
如果仅在 上重新加载,您的甜点列表会更改,并且新列表中包含与以前选择的ID相同的商品,则应该选择同一行。
我分叉了代码笔示例,以向您展示其工作原理:
https://codepen.io/anon/pen/PrWjxQ?editors=1010
答案 2 :(得分:0)
其他人都已经说明了如何使行可单击,但是没有说明如何切换行选择。可以通过isSelected
检查选择状态,然后进行相应设置。
要正确设置所选行的样式,您还需要考虑其他因素:深色和浅色主题和hover
CSS伪类-通过important
标签覆盖此伪类,因此我们需要重新设置样式它。
methods: {
rowClick: function (item, row) {
let selectState = (row.isSelected) ? false : true;
row.select(selectState);
}
}
<style>
.theme--light.v-data-table tbody tr.v-data-table__selected {
background: #f5c17d70 !important;
}
.theme--dark.v-data-table tbody tr.v-data-table__selected {
background: #a17b4970 !important;
}
.theme--dark.v-data-table tbody tr.v-data-table__selected:hover {
background: #a17b49c2 !important;
}
.theme--light.v-data-table tbody tr.v-data-table__selected:hover {
background: #ffd296d2 !important;
}
</style>