|
App.vue
<template>
<div id="app">
<ejs-grid :dataSource="data" height="310">
<e-columns>
<e-column field="action" headerText="Discontinued" :template="cTemplate" ></e-column>
…
</e-columns>
</ejs-grid>
export default {
data: () => {
return {
data: data,
cTemplate: function() {
return {
template: Vue.component("columnTemplate", {
template: `<div v-if=canViewActions class="template">
<button class="secondary-action-row" @click="editFranchise">ADD</button>
</div>
<div v-else class="template">
<button class="secondary-action-row" @click="editFranchise">DELETE</button>
</div>`,
},
computed: {
canViewActions: function() {
return this.data.action;
}
};
|
|
Data.ts
export let data: Object[] = [
{
OrderID: 10248,
CustomerID: "VINET",
EmployeeID: 5,
action: true,
OrderDate: new Date(),
},
{
OrderID: 10249,
CustomerID: "TOMSP",
EmployeeID: 6,
action: false,
…
]; |
|
App.vue
<template>
<div id="app">
<ejs-grid :dataSource="data" height="310">
<e-columns>
<e-column field="action" headerText="Discontinued" width="150" textAlign="Center" :template="cTemplate"></e-column>
…
</e-columns>
</ejs-grid>
export default {
data: () => {
cTemplate: function() {
return {
template: Vue.component("columnTemplate", {
template: `<div v-if=canViewActions class="template">
<button class="secondary-action-row" @click="editFranchise">ADD</button>
</div>
<div v-else class="template">
<button class="secondary-action-row" @click="editFranchise">DELETE</button>
</div>`,
data: function() {
return {
data: {},
val: 5
};
},
computed: {
canViewActions: function() {
var temp = this.val > 4;
return temp;
}
}
}); |
|
Index.js
import Vue from "vue";
import { GridPlugin, Page, Sort, Filter, Group, Aggregate, Edit, Toolbar, CommandColumn } from "@syncfusion/ej2-vue-grids";
import { closest } from "@syncfusion/ej2-base";
Vue.use(GridPlugin);
Vue.prototype.$eventHub = new Vue();
new Vue({
el: '#app',
template: `
<div id="app">
<ejs-grid id='grid' ref='grid' :dataSource="data" :allowPaging="true" :allowSorting='true' :allowFiltering='true'
:pageSettings='pageSettings':editSettings='editSettings' :toolbar='toolbar'>
<e-columns>
<e-column field='OrderID' headerText='Order ID' textAlign='Right' minWidth= 100 width=150 maxWidth=250 ></e-column>
<e-column field='CustomerID' headerText='Customer ID' width=120></e-column>
<e-column field='Freight' headerText='Freight' width=80></e-column>
<e-column headerText='columnTemplate' width='150' textAlign='Center' :template='cTemplate'></e-column>
</e-columns>
</ejs-grid>
</div>
`,
data() {
return {
data: [
{ OrderID: 10248, CustomerID: 'VINET', Freight: 32.38, OrderDate:new Date(8364186e5) },
{ OrderID: 10249, CustomerID: 'TOMSP', Freight: 11.61,OrderDate:new Date(836505e6)},
{ OrderID: 10250, CustomerID: 'HANAR', Freight: 65.83,OrderDate:new Date(8367642e5)},
{ OrderID: 10251, CustomerID: 'VICTE', Freight: 41.34, OrderDate:new Date(8367642e5)},
{ OrderID: 10252, CustomerID: 'SUPRD', Freight: 51.3, OrderDate:new Date(8379738e5)},
{ OrderID: 10253, CustomerID: 'HANAR', Freight: 58.17, OrderDate:new Date(8377146e5)},
],
cTemplate: function () {
return {
template: Vue.component('columnTemplate',{
template: `<button v-on:click="fun(event)">buttton</button>`,
data: function(){
return {
data:{}
}
},
methods: {
fun: function(e){
debugger
this.$eventHub.$emit('detail',this._uid);
}
}
})
}
},
pageSettings: { pageSize: 5 },
editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Normal' },
toolbar: ['Add', 'Edit', 'Delete'],
};
},
methods: {
onClick: function(args) {
let rowObj= this.$refs.grid.ej2Instances.getRowObjectFromUID(closest(args.target, '.e-row').getAttribute('data-uid'));
let data = rowObj.data;
alert(JSON.stringify(data));
}
},
provide: {
grid: [Page, Sort, Filter, Group, Aggregate, Edit, Toolbar, CommandColumn]
},
created() {
this.$eventHub.$on('detail', (e)=>{
alert("passed value: "+ e);
});
},
});
|