Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
5 Trả lời
27140 Lượt xem

I want to do something like this, but it does not works:

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<tr t-extend="ListView.row" t-att-class="view.class_for(record)">
</tr>
</templates>

Just want to add t-att-class to the tr element. The problem is that tr is the root node, and I cant figure out how to refer it for inheritance. Can someone help me?

The original template looks like this:

<tr t-name="ListView.row"
t-att-data-id="record.get('id')"
t-att-style="view.style_for(record)">
<t t-set="asData" t-value="record.toForm().data"/>
<t t-foreach="columns" t-as="column">
<td t-if="column.meta"> </td>
</t>
<th t-if="options.selectable" class="oe_list_record_selector" width="1">
<t t-set="checked" t-value="options.select_view_id == record.get('id') ? 'checked' : null"/>
<input t-if="options.radio" type="radio" name="radiogroup" t-att-checked="checked"/>
<input t-if="!options.radio" type="checkbox" name="radiogroup" t-att-checked="checked"/>
</th>
<t t-foreach="columns" t-as="column">
<t t-set="number" t-value="column.type === 'integer' or column.type == 'float'"/>
<t t-set="modifiers" t-value="column.modifiers_for(asData)"/>
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
t-attf-class="oe_list_field_cell oe_list_field_#{column.widget or column.type} #{number ? 'oe_number' : ''} #{column.tag === 'button' ? 'oe-button' : ''} #{modifiers.readonly ? 'oe_readonly' : ''} #{modifiers.required ? 'oe_required' : ''}"
t-att-data-field="column.id"
><t t-raw="render_cell(record, column)"/></td>
</t>
<td t-if="options.deletable" class='oe_list_record_delete' width="13px">
<button type="button" name="delete" class="oe_i">d</button>
</td>
</tr>

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

try this one. if not working, dig into manual deeper from v7.

<t t-extend="ListView.row">
<xpath expr="//tr[@t-name='Listview.row']" position="attributes">
<attribute name="t-att-class">view.class_for(record)</attribute> <xpath>
</t>
Ảnh đại diện
Huỷ bỏ
Tác giả Câu trả lời hay nhất

Hi Dhinesh,

I have tried your code but does not work for me. Currently I am using this approach that adds the class property at td level, but what I want is to add it at tr level:


<t t-extend="ListView.row">
  <t t-jquery="td[t-att-data-field='column.id']">
  this.attr('t-attf-class', this.attr('t-attf-class') + ' #{view.class_for(record)}');
  </t>
</t>
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Your code does not in working

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Its a litte bit late but maybe it will help someone who is also stumbling over this topic.

I'm using the following code to add custom CSS to the rows and to the cells:

<t t-extend="ListView.row">
    <t t-jquery="tr">
        this.context.setAttribute('t-att-class', 'view.class_for(record)');
    </t>
  <t t-jquery="td[t-att-data-field='column.id']">
      this.attr('t-attf-class', this.attr('t-attf-class') + ' {{view.class_for_cell(record, column)}}');
  </t>
</t>

The method "class_for_cell" is an own function to extract the information from the field and set the specific class to the cell.

Working with V8.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hi,

You can just use the Qweb Js inheritance by extending the t-name and adding the new class like below:

<?xml version="1.0" encoding="UTF-8"?>
<templates>
    <t t-extend="ListView.row">
        <t t-jquery="tr[t-att-data-id*='record.get('id')']">
            this.attr('t-attf-class', this.attr("t-attf-class") + 'view.class_for(record)');
        </t>
    </t>
</templates>
Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 11 19
8386
0
thg 6 23
1804
2
thg 12 22
22816
0
thg 7 21
2018
Qweb Inheritance Đã xử lý
3
thg 11 19
7642