I'm trying to read data from server side and fill in to the grid, it's about 50,000 rows.
I'm using Spring MVC, it always takes 5~9 seconds between "return 'index'" and receiving the "read" request from index.jsp, and it'll take a little shorter after the first loading of grid, but also more than 3 seconds every time.
My controller code is like this: (the time is between time1 and time2)
@RequestMapping(method={RequestMethod.GET})public String index(Model model) { // time1 return"index";}@RequestMapping(value="list", method={RequestMethod.GET})@ResponseBodypublic String list(Model model) { // time2 ...}
The related dataSource code is like:
vardataSource1 = newkendo.data.DataSource({ transport: { read: { url: "${listUrl}", dataType: "json"}, create: { url: "${createUrl}", dataType: "json", type: "post"}, update: { url: "${updateUrl}", dataType: "json", type: "post"}, parameterMap: function(options, operation) { return{ category: category, queryType: queryType.value(), models: kendo.stringify(options.models) } } }, batch: true, pageSize: 20, schema: { model: { id: "id", fields: { id: { type: "number", editable: false}, on: { type: "string"}, ln: { type: "string", validation: { required: true} } } } }, requestEnd: onRequestEnd }); $("#grid1").kendoGrid({ dataSource: dataSource1, pageable: true, height: 550, toolbar: ["create"], columns: [{ field: "id", title: "ID", width: "80px", filterable: { ui: function(element) { element.kendoAutoComplete({ dataSource: dataSource1, dataTextField: "id" }); } } },{ field: "on", title: "Operating Name", width: "320px", filterable: { ui: function(element) { element.kendoAutoComplete({ dataSource: dataSource1, dataTextField: "on" }); } } },{ field: "ln", title: "Legal Name", width: "320px", filterable: { ui: function(element) { element.kendoAutoComplete({ dataSource: dataSource1, dataTextField: "ln" }); } } },{ command: ["edit"], title: " ", width: "200px" }], editable: "inline", filterable: { extra: false, operators: { number: { eq: "Is equal to", gt: "Greater than", }, string: { startswith: "Starts with", contains: "Contains", } } }, });vardataSource2 = newkendo.data.DataSource({ transport: { read: { url: "${listUrl}", dataType: "json"}, create: { url: "${createUrl}", dataType: "json", type: "post"}, update: { url: "${updateUrl}", dataType: "json", type: "post"}, parameterMap: function(options, operation) { return{ category: category, queryType: queryType.value(), models: kendo.stringify(options.models) } } }, batch: true, pageSize: 20, schema: { model: { id: "id", fields: { id: { type: "number", editable: false}, desc: { type: "string", validation: { required: true} } } } }, requestEnd: onRequestEnd }); $("#grid2").kendoGrid({ autoBind: false, dataSource: dataSource2, pageable: true, height: 550, toolbar: ["create"], columns: [{ field: "id", title: "ID", width: "80px", filterable: { ui: function(element) { element.kendoAutoComplete({ dataSource: dataSource2, dataTextField: "id" }); } } },{ field: "desc", title: "Description", width: "840px", filterable: { ui: function(element) { element.kendoAutoComplete({ dataSource: dataSource2, dataTextField: "desc" }); } } }, { command: ["edit"], title: " ", width: "200px" } ], editable: "inline", filterable: { extra: false, operators: { number: { eq: "Is equal to", gt: "Greater than", }, string: { startswith: "Starts with", contains: "Contains", } } }, });
Please help me to find the reason, Thanks!