or
<
record
number
=
"3"
>
<
nid
>3</
nid
>
<
column1
>row3col1</
column1
>
<
column2
>BBBtxt,CCCtxt</
column2
>
<
mval
>BBBval,CCCval</
mval
>
</
record
>
<
record
number
=
"4"
>
<
nid
>4</
nid
>
<
column1
>row4col1</
column1
>
<
column2
>BBBtxt,CCCtxt</
column2
>
<
mval
>BBBval</
mval
>
<
mval
>CCCval</
mval
>
</
record
>
<
record
number
=
"2"
>
<
nid
>2</
nid
>
<
column1
>row2col1</
column1
>
<
column2
>AAAtxt</
column2
>
<
mval
>AAAval</
mval
>
</
record
>
// JavaScript Document
jQuery(document).ready(
function
() {
// grid
jQuery(
"#grid"
).kendoGrid({
dataSource: gridDataSource,
columns: [
{
field:
"column1"
,
title:
"Column 1"
,
width:
"300px"
},
{
field:
"column2"
,
title:
"Column 2"
,
editor: multiselect_editor,
width:
"300px"
},
{
command: [
{name:
"edit"
,text:{update:
"Edit"
,cancel:
"Cancel"
}},
],
width:
"10%"
}
],
toolbar: [{name:
"create"
,text:
"New"
}],
editable: {mode:
"popup"
},
sortable:
true
,
pageable:
true
,
resizable:
true
});
})
//grid datasource
var
gridDataSource =
new
kendo.data.DataSource({
type:
"xml"
,
transport: {
read:
function
(options) {
jQuery.ajax( {
url:
"data/griddata.asp"
,
type:
"POST"
,
cache:
false
,
success:
function
(result) { options.success(result); },
error:
function
(e) { alert(e.responseText); },
data: {
startrow: ((options.data.pageSize*(options.data.page-1))+1),
maxrows: 50
}
});
},
update:
function
(options) {
alert(
"updated"
);
},
create:
function
(options) {
alert(
"created"
);
}
},
schema: {
type:
"xml"
,
data:
"/root/resultset/record/"
,
model: {
id:
"nid"
,
fields: {
nid:
"nid/text()"
,
column1:
"column1/text()"
,
mval:
"mval/text()"
,
column2:
"column2/text()"
}
},
total:
"/root/resultset/@size"
},
error:
function
(e) {
alert(e.xhr.responseText);
},
serverFiltering:
true
,
serverPaging:
true
,
serverSorting:
true
,
pageSize: 50
})
// multiselect for popup editor
function
multiselect_editor (container, options) {
jQuery(
'<select multiple="multiple" id="multiselect_editor" data-text-field="textnode" data-value-field="valuenode" data-bind="value:mval"/>'
)
.appendTo(container)
.kendoMultiSelect ({
placeholder:
"Select..."
,
autoBind:
true
,
dataTextField:
"textnode"
,
dataValueField:
"valuenode"
,
dataSource: {
type:
"xml"
,
serverFiltering:
true
,
sort: { field:
"textnode"
, dir:
"asc"
},
transport: {
read: { type:
"POST"
, cache:
false
, url:
"data/multiselectdata.asp"
},
},
schema: {
type:
"xml"
,
data:
"/root/resultset/record"
,
model: {
fields: {
textnode:
"textnode/text()"
,
valuenode:
"valuenode/text()"
}
}
}
,error:
function
(e) {
alert(e.xhr.responseText);
}
}
});
}
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
root
>
<
resultset
date
=
"03/09/2013"
size
=
"3"
time
=
"10:13:50"
>
<
record
number
=
"1"
>
<
nid
>1</
nid
>
<
column1
>row1col1</
column1
>
<
column2
></
column2
>
<
mval
></
mval
>
</
record
>
<
record
number
=
"2"
>
<
nid
>2</
nid
>
<
column1
>row2col1</
column1
>
<
column2
>AAAtxt</
column2
>
<
mval
>AAAval</
mval
>
<!-- Works for multi select data binding (to set 1 selected item in the multiselect in the editor) -->
</
record
>
<
record
number
=
"3"
>
<
nid
>3</
nid
>
<
column1
>row3col1</
column1
>
<
column2
>BBBtxt,CCCtxt</
column2
>
<
mval
>BBBval,CCCval</
mval
>
<!-- Does not work for multiselect data binding (to set 2 selected items in the multiselect in the editor) -->
</
record
>
<
record
number
=
"4"
>
<
nid
>4</
nid
>
<
column1
>row4col1</
column1
>
<
column2
>BBBtxt,CCCtxt</
column2
>
<
mval
>BBBval</
mval
>
<!-- Does not work for multiselect data binding (to set 2 selected items in the multiselect in the editor) -->
<
mval
>CCCval</
mval
>
</
record
>
</
resultset
>
</
root
>
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
root
>
<
resultset
date
=
"03/09/2013"
size
=
"5"
time
=
"10:13:50"
>
<
record
number
=
"1"
>
<
nid
>1</
nid
>
<
valuenode
>AAAval</
valuenode
>
<
textnode
>AAAtxt</
textnode
>
</
record
>
<
record
number
=
"2"
>
<
nid
>2</
nid
>
<
valuenode
>BBBval</
valuenode
>
<
textnode
>BBBtxt</
textnode
>
</
record
>
<
record
number
=
"3"
>
<
nid
>3</
nid
>
<
valuenode
>CCCval</
valuenode
>
<
textnode
>CCCtxt</
textnode
>
</
record
>
<
record
number
=
"4"
>
<
nid
>4</
nid
>
<
valuenode
>DDDval</
valuenode
>
<
textnode
>DDDtxt</
textnode
>
</
record
>
</
resultset
>
</
root
>
var
MyDatasource =
new
kendo.data.DataSource({
type:
'odata'
/* for odata style IQueryable web api */
serverPaging:
true
,
serverSorting:
true
,
pageSize: 15,
transport: {
read: {
dataType:
"json"
,
url:
"mywebapi/mydata"
})
The DataSource is used by a Kendo grid with scrollable: { virtual: true }.
A user has the ability to search for data where the searchparam is set on my viewmodel.
within my viewmodel i simply call "MyDatasource.read({ searchvalue: userparam })" to get the data from my web-api which works perfectly.
However, in combination with paging the parameter is lost when reading the next page.
Is there any way to preserve that param so it gets send with the next pages as well ?
Thanks in advance.
$("#level3-multiselect").kendoMultiSelect({
autoBind: false,
dataTextField: "name",
dataValueField: "id",
dataSource: {
serverFiltering: true,
transport: {
dataType: "jsonp",
read: baseurl: 'http://myurl'
parameterMap: function(options, operation) {
var _name = "";
if ('filter' in options && options.filter.filters.length > 0) {
_name = options.filter.filters[0].value;
}
return {
level1ids: getLevel1Ids().join(),
level2ids: getLevel2Ids().join(),
name: _name
}
}
},
schema: {
data: "items"
}
}
});