Now I am able to place autocomplete component in column but unable to bind its value to the gird. I am also supposed to update the whole row with autocomplete's selected value.
<ejs-grid :dataSource="dataGrid" :editSettings="editSettings" :toolbar="toolbar">
<e-columns>
<e-column
field="ItemCode"
headerText="Item Code"
textAlign="center"
:editTemplate="itemCodeTemplate"
></e-column>
<e-column field="ItemDescription" headerText="Item Description"></e-column>
<e-column field="subCode" headerText="subCode"></e-column>
<e-column field="BaseItemQuantity" headerText="BaseItemQuantity"></e-column>
<e-column
field="ItemPrice"
headerText="ItemPrice"
:editTemplate="ItemPriceEditTemplate"
:template="ItemPriceViewTemplate"
></e-column>
<e-column field="ItemExciseTax" headerText="ItemExciseTax"></e-column>
<e-column field="LineNetAmount" headerText="LineNetAmount"></e-column>
</e-columns>
</ejs-grid>
import Vue from 'vue'
import api from '../service'
import { AutoCompletePlugin } from '@syncfusion/ej2-vue-dropdowns'
import { GridPlugin, Edit, Toolbar } from '@syncfusion/ej2-vue-grids'
Vue.use(GridPlugin)
Vue.use(AutoCompletePlugin)
export default {
name: 'SalesOrderFormV1',
provide: {
grid: [Edit, Toolbar]
},
data() {
return {
// grid properties starts here
toolbar: ['Add', 'Edit', 'Delete', 'Update', 'Cancel'],
editSettings: { allowEditing: true, allowAdding: true, newRowPosition: 'Bottom' },
ItemPriceEditTemplate: function() {
return {
template: Vue.component('columnTemplate', {
template: `
<input class="tr_text_field text-right left" id="1_ItemQuantity1" maxlength="8" v-model="data.ItemPrice">
<span class="left"><span class="inline-uom " id="1_UOM1">{{ data.BaseUOM }}</span><span class="tr_text_field ">{{ data.BaseItemQuantity }}</span></span>
`
})
}
},
ItemPriceViewTemplate: function() {
return {
template: Vue.component('columnTemplate', {
template: `
<p> {{ data.ItemPrice }} </p>
<span class="left"><span class="inline-uom" id="1_UOM1">{{ data.BaseUOM }}</span><span class="tr_text_field ">{{ data.BaseItemQuantity }}</span></span>
`
})
}
},
itemCodeTemplate: function() {
return {
template: Vue.component('itemcodeTemplate', {
template: `<ejs-autocomplete
:dataSource="itemCodeOptions"
:filtering="getProducts"
@change="changeSelectedProduct"
ref="sideBarSearchInline"
:value="data.ItemCode"
></ejs-autocomplete>`,
data() {
return {
data: {},
itemCodeOptions: []
}
},
methods: {
changeSelectedProduct(event) {
// need to update bind autocomplete value and update whole row
console.log('autocomplete value', event)
},
getProducts(searchText) {
console.log(searchText, 'autocomplete')
if (!searchText || searchText.text === '' || !searchText.text) {
return
}
this.itemCodeOptions = []
const client = api()
client
.get('/products', {
params: {
requesttype: 16,
CustomerID: this.selectedOutlet, // need to pass value from main component to custom template
WarehouseID: this.selectedWarehouse, // need to pass value from main component to custom template
DivisionID: this.selectedDivision // need to pass value from main component to custom template
}
})
.then(response => {
this.itemCodeOptions = response.data
})
}
}
})
}
},
// grid properties ends here
dataGrid: [],
rowData: { // each row has these fields
sr: '',
ItemCode: '',
ItemDescription: '',
subCode: '',
UOM0: '',
UOM1: '',
UOM2: '',
UOM3: '',
UOM4: '',
ItemQuantity1: '',
ItemQuantity2: '',
ItemQuantity3: '',
ItemQuantity4: '',
ItemQuantity5: '',
BaseUOM: '',
Conversion1: '',
Conversion2: '',
Conversion3: '',
Conversion4: '',
LineNetAmount: '',
SubHierarchyCode: '',
BUOMConversion: '',
ItemQuantity: '',
MRP: '',
ItemPrice: '',
Discount: '',
tax: [],
free: '',
amount: '',
ItemNumber: null,
PrincipalPrice: 0,
SalesPrice: 0,
SubDTMargin: 0,
ItemExciseTax: null,
BaseItemQuantity: '',
CESS: null,
CESSPerc: null,
CGST: null,
CGSTPerc: null,
FreeGood: '',
IGST: null,
IGSTPerc: null,
IsFreeGood: null,
ItemTotalPromotion: null,
PromotionDiscount: null,
SGST: null,
SGSTPerc: null,
SalesLineID: null,
SalesTax: null,
StorageBinID: null,
TaxAttributes: '',
UTGST: null,
UTGSTPerc: null,
UnitsOfMeasure: '',
VAT: null,
VATPerc: null
}
}
},
Please help me with this. Thanks in advance
Regards,
Sandeep G