Something very strange is happening when I am using the filter of KendoUI Grid. My grid is very simple and the definition is like this:
var cols = [];
cols[0] = { field: 'name', title: 'Nome', width: "65%" };
cols[1] = { field: 'eMail', title: 'eMail', width: "20%" };
cols[2] = { field: 'city', title: 'Cidade', width: "15%" };var cfgGrid = { dataSource: dsPersons,
batch: false,
change: onSelectedRow,
selectable: "row",
resizable: true,
scrollable: true,
sortable: { mode: 'multiple', allowUnsort: true },
filterable: true,
editable: false,
pageable: { numeric: false },
columns: cols };gridPessoas = null;
The grid is displayed correctly in url:
gridPessoas = $("#gridElem").kendoGrid(cfgGrid).data("kendoGrid");
But when I try to filter any column kendoUI redirects to a page:
http://localhost:50409/undefined?
The Datasource was defined like that:
var ds = { data: persons,
schema: model,
filter: {},
serverPaging: false,
serverFiltering: false,
pageSize: 12 };
The grid is ok and the error only occurs when I define a filter value and click on the filter button.
This is an ASP.NET MVC 4 site. I cannot imagine what is going on.
Can you help me ???
Thanks in advance
@(Html.Kendo().Grid<
TaskViewModel
>()
.Name("UserTasksGrid")
.Columns(column =>
{
column.Bound(task => task.Title);
column.Bound(task => task.IsCompleted)
.ClientTemplate("<
input
type=\"checkbox\" #= (IsCompleted === true) ?
checked
=
'checked'
: '' # disabled=\"true\"")
column.Bound(task => task.TaskType)
column.Bound(task => task.DueDate).Format("{0:yyyy-MM-dd}")
column.Bound(task => task.CompletedOn)
.ClientTemplate("#= (IsCompleted == false) ? '' : kendo.toString(CompletedOn, 'yyyy-MM-dd') #")
column.Template(model => model).ClientTemplate("<
a
href
=
'/production/index?productionId=#=ProductionId#'
style=\"width:\">GÃ¥ till produktionssida</
a
>");
})
.Filterable()
.Sortable()
.Scrollable(scroll => scroll.Height(300))
.Pageable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.ServerOperation(false)
.Model(model => model.Id(m=> m.Id))
.Sort(sort => sort.Add(task => task.IsCompleted))
.Read(read => read.Action("UserTasks_Read", "Task"))
)
)
.ColumnMenu(menu => menu.Sortable(true))
<script id=
"treeview-template"
type=
"text/kendo-ui-template"
>
#: item.Name #
</script>
<script>
var
meterid = 1179;
var
treeurl =
'treeview_remote_url'
;
var
datatree =
new
kendo.data.HierarchicalDataSource({
transport: {
read: {
url: treeurl,
dataType:
"json"
,
cache:
true
}
},
schema:
{
model:
{
children:
"Children"
,
fields:
{
id: { type:
"number"
},
Name: { type:
"string"
}
}
}
}
});
function
onSelect(e) {
var
treeview = $(
"#treeview"
).kendoTreeView({
select:
function
() {
meterid = ($(
this
).text());
}
});
$(
"#grid"
).data(
"kendoGrid"
).dataSource.read();
}
$(document).ready(
function
() {
$(
"#treeview"
).kendoTreeView(
{
template: kendo.template($(
"#treeview-template"
).html()),
dataSource: datatree,
dataTextField:
"id"
});
var
treeview = $(
"#treeview"
),
kendoTreeView = treeview.data(
"kendoTreeView"
);
treeview.on(
"click"
,
".k-in"
,
function
(e) {
kendoTreeView.toggle($(e.target).closest(
".k-item"
));
onSelect();
});
});
<script>
var
dateRegExp = /^\/Date\((.*?)\)\/$/;
function
toDate(value) {
var
date = dateRegExp.exec(value);
return
new
Date(parseInt(date[1]));
}
sourceUrl =
"grid_remote_url... &id="
+ meterid;
$(document).ready(
function
() {
$(
"#grid"
).kendoGrid({
dataSource: {
type:
"json"
,
transport: {
read: sourceUrl
},
refresh:
true
,
serverSorting:
true
,
scrollable:
true
},
height:
'100%'
,
scrollable: {
virtual:
false
},
columns: [
{ field:
"data"
, title:
"Date/Time"
, template:
'#= kendo.toString(toDate(data), "dd/MM/yyyy HH:ss")#'
, width:
'10%'
},
{ field:
"valoare"
, title:
"Energy (MWh)"
, template:
'#= kendo.toString(valoare, "n5")#'
},
{ field:
"valoare"
, title:
"Energy (MWh)"
, template:
'#= kendo.toString(valoare, "n5")#'
}
]
});
});
</script>