【问题标题】:Quasar table change style of whole row based on value in one cellQuasar 表根据一个单元格中的值更改整行的样式
【发布时间】:2020-10-06 22:59:36
【问题描述】:

我正在尝试根据一个单元格中的值更改整行的样式。为此,我使用了模板样式,但它只允许我更改一个单元格的样式。

<q-table
  :data="rows"
  row-key="name"
>
  <template v-slot:body-cell-name="props">
    <q-td :props="props">
      <div>
        <q-badge
          :label="props.value"
          :class="(props.value=='Ice cream sandwich') ? 
            'bg-accent spc' : 'bg-white text-black'"
        ></q-badge>
      </div>
    </q-td>
  </template>
</q-table>

但是,是否可以更改整行的样式,以使整个单元格和行填充背景色,而不是仅在单元格值周围的小区域填充?以下是它目前的工作方式: https://codepen.io/pokepim/pen/pogNyVy

但期望的结果是,根据单元格中的值,整行都是紫色的。

编辑: 我不知道有多少列以及它们的名称。

【问题讨论】:

    标签: css vue.js styles background-color quasar-framework


    【解决方案1】:

    您可以像这样使用body-cell 根据该行中单元格的值设置整行样式:

      <template v-slot:body-cell="props">
        <q-td
          :props="props"
          :class="(props.row.name=='Ice cream sandwich')?'bg-accent text-white':'bg-white text-black'"
        >
          {{props.value}}
        </q-td>
      </template>
    

    【讨论】:

      【解决方案2】:

      v-slot:body-cell-name 仅对您需要使用body slot 的单元格设置样式。

      <template v-slot:body="props">
              <q-tr :props="props" :class="(props.row.name=='Ice cream sandwich')?'bg-accent text-white':'bg-white text-black'">
                <q-td key="name" :props="props">
                  {{ props.row.name }}
                </q-td>
                <q-td key="calories" :props="props">
                  <q-badge color="green">
                    {{ props.row.calories }}
                  </q-badge>
                </q-td>
                <q-td key="fat" :props="props">
                  <q-badge color="purple">
                    {{ props.row.fat }}
                  </q-badge>
                </q-td>
                <q-td key="carbs" :props="props">
                  <q-badge color="orange">
                    {{ props.row.carbs }}
                  </q-badge>
                </q-td>
                <q-td key="protein" :props="props">
                  <q-badge color="primary">
                    {{ props.row.protein }}
                  </q-badge>
                </q-td>
                <q-td key="sodium" :props="props">
                  <q-badge color="teal">
                    {{ props.row.sodium }}
                  </q-badge>
                </q-td>
                <q-td key="calcium" :props="props">
                  <q-badge color="accent">
                    {{ props.row.calcium }}
                  </q-badge>
                </q-td>
                <q-td key="iron" :props="props">
                  <q-badge color="amber">
                    {{ props.row.iron }}
                  </q-badge>
                </q-td>
              </q-tr>
            </template>
      

      codepen - https://codepen.io/Pratik__007/pen/NWxbbMK?editors=1010

      编辑 -

      您也可以对动态列执行操作,只需循环列。

      <q-td
                  v-for="col in props.cols"
                  :key="col.name"
                  :props="props"
                >
                  {{ col.value }}
                </q-td>
      

      【讨论】:

      • 但问题是我不知道有多少列,所以这在我的情况下不起作用
      猜你喜欢
      • 2021-06-01
      • 2010-09-27
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 2018-01-16
      • 2022-09-29
      相关资源
      最近更新 更多