Hey guys,
I'm relatively new to Kendo UI and just had a question about filtering a grid by using values from a combobox. From my understanding I can do something like this:
@(Html.Kendo().ComboBox()
.Name("combobox name")
.Events(e=>e.Change(@<text>
function(e) {
var grid = $("#Grid").data("kendoGrid");
var value = this.value();
if(value) {
grid.dataSource.filter({ field: "filter field", operator: "eq", value: parseInt(value) });
}
else{
grid.dataSource.filter({});
}
}
</text>
)
)
.Placeholder("Place holder..")
.DataTextField("Text")
.DataValueField("Value")
.DataSource(source => {
source.Read(read =>
{
read.Action("Controller Action", "Controller");
});
})
.SelectedIndex(0)
I've tried this and leads it filters my grid with my desired results, but if I go about it this way and try to add a new item, the item is then added to the unfiltered page of the grid (which is not desirable). From a few other posts I have read, I found I could navigate around this issue simply by adding a few things to to the filter command, like so:
grid.dataSource.filter({logic: "or", filters[{ field: "filter field", operator: "eq", value: parseInt(value) }, { field: "filter field", operator: "eq", value: 0 }]})
Having that allows me to, when I click add a new item, to have that item show up on the filtered page of the grid. However, I am then unable to save that newly created instance. I wonder is there another way of filtering a grid using a combobox? If there is, any help/ advice would be really helpful.
Thanks,
Chris
I'm relatively new to Kendo UI and just had a question about filtering a grid by using values from a combobox. From my understanding I can do something like this:
@(Html.Kendo().ComboBox()
.Name("combobox name")
.Events(e=>e.Change(@<text>
function(e) {
var grid = $("#Grid").data("kendoGrid");
var value = this.value();
if(value) {
grid.dataSource.filter({ field: "filter field", operator: "eq", value: parseInt(value) });
}
else{
grid.dataSource.filter({});
}
}
</text>
)
)
.Placeholder("Place holder..")
.DataTextField("Text")
.DataValueField("Value")
.DataSource(source => {
source.Read(read =>
{
read.Action("Controller Action", "Controller");
});
})
.SelectedIndex(0)
I've tried this and leads it filters my grid with my desired results, but if I go about it this way and try to add a new item, the item is then added to the unfiltered page of the grid (which is not desirable). From a few other posts I have read, I found I could navigate around this issue simply by adding a few things to to the filter command, like so:
grid.dataSource.filter({logic: "or", filters[{ field: "filter field", operator: "eq", value: parseInt(value) }, { field: "filter field", operator: "eq", value: 0 }]})
Having that allows me to, when I click add a new item, to have that item show up on the filtered page of the grid. However, I am then unable to save that newly created instance. I wonder is there another way of filtering a grid using a combobox? If there is, any help/ advice would be really helpful.
Thanks,
Chris