Comment on page
Editable Cells
Editable cells are currently supported only for the client table.
To ensure editable data is reflected on your original dataset you must use `v-model` instead of the `data` prop.
Each row in dataset must have a unique identifier. By default its key is set to `id`. Use the `uniqueKey` option if your dataset has a different identifier.
As always examples work best to illustrate the syntax:
Start by declaring the column(s) you wish to be editable using the `editableColumns` option:
{
editableColumns:['text','text2','checkbox']
}
Then use scoped slots to build the logic:
<v-client-table :columns="client.columns" :options="client.options" v-model="client.data">
// update text on the fly
<input type="text" slot="text" slot-scope="{row, update}" v-model="row.text" @input="update">
// update a checkbox
<input type="checkbox" slot="checkbox" slot-scope="{row, update}" v-model="row.checkbox" @input="update">
// update text on submit + toggle editable state + revert to original value on cancel
<div slot="text2" slot-scope="{row, update, setEditing, isEditing, revertValue}">
<span @click="setEditing(true)" v-if="!isEditing()">
{{row.text2}}
</span>
<span v-else>
<input type="text" v-model="row.text2">
<button type="button" @click="update(row.text2); setEditing(false)">Submit</button>
<button type="button" @click="revertValue(); setEditing(false)">Cancel</button>
</span>
</div>
</v-client-table>
In addition to the `input` event which is responsible - in conjunction with `v-model` - for updating the dataset, an additional `update` event is triggered with the following payload:
{row, column, oldVal, newVal}
Last modified 4yr ago