I'm trying to convert a Kendo UI grid column from a dropdown to an Kendo AutoComplete. I'm using an MVVM pattern and can't find any examples that like mine. Here is what I have so far:
In my viewModel:
viewModel = kendo.observable({
suggestedVendor: { "SuggestedVendor": "" },
suggestedVendorDropDownDataSource: new kendo.data.DataSource({
... returns a list of Suggested Vendors
}),
suggestedVendorDropdownEditor: function (container, options) {
var input = $("<input id='selecteditem' />");
input.attr("SuggestedVendor", options.field);
input.appendTo(container);
input.kendoAutoComplete({
dataSource: this.suggestedVendorDropDownDataSource,
dataTextField: "SuggestedVendor",
dataValueField: "SuggestedVendor",
dataBind:"value:' + options.field + '"
});
The field in my grid:
{ field: "SuggestedVendor",
title: "Suggested Vendor",
editor: viewModel.suggestedVendorDropdownEditor,
template: "#= (data.SuggestedVendor == null) ? '' : data.SuggestedVendor #" },
I can enter the suggested vendor field and it seems to act like an autocomplete but never returns and data. I can try and create a fiddle if the problem is not immediately obvious.
EDIT:
I figured out how to do what I needed with the help of a fiddle I found. I forked it and although the fields are different, it does what I needed. Here is the fiddle I forked to.
I ended up changing my editor code like so:
suggestedVendorDropdownEditor: function (container, options) {
$('<input id= "selectedItem" data-bind="value: ' + options.field + ' "/>')
.appendTo(container).kendoAutoComplete({
dataSource: viewModel.suggestedVendorDropDownDataSource,
dataTextField: "SuggestedVendor",
dataValueField: "SuggestedVendor"
});
var autoComplete =$("#selectedItem").data("kendoAutoComplete");
autoComplete.list.width(300);
}
I got it figured out after getting advice from the comment by Lars. Here is the code:
suggestedVendorDropdownEditor: function (container, options) {
$('<input id= "selectedItem" data-bind="value: ' + options.field + ' "/>')
.appendTo(container).kendoAutoComplete({
dataSource: viewModel.suggestedVendorDropDownDataSource,
dataTextField: "SuggestedVendor",
dataValueField: "SuggestedVendor"
});
var autoComplete =$("#selectedItem").data("kendoAutoComplete");
autoComplete.list.width(300);
}