3
我们希望从我们当前的网格(JQWidgets)切换到KendoUI网格,并且我正在研究一个概念验证。我们最大的需求是服务器端分页/排序/过滤,这就是我遇到的问题。将Kendo Grid与Coldfusion集成
我们现有电网是基于XML的,所以我创建了一个剑道网格,做同样的:
$(document).ready(function(){
var xmlDataRemote = new kendo.data.DataSource({
transport: {
read: { url: "/KendoDashboard/KendoController.cfc?method=getGrid" }
},
pageSize: 20,
serverPaging: true,
serverSorting: true,
serverFiltering: true,
schema: {
type: "xml",
data: "/Items/Item",
total: "/Items/Item/TotalRows",
model: {
id: "ID",
fields: {
Name: { field: "Name/text()", type: "string" },
Status: { field: "Status/text()", type: "string" },
Type: { field: "Type/text()", type: "string" }
}
}
}
});
var grid = $("#grid").kendoGrid({
dataSource: xmlDataRemote,
pageable: true,
sortable: true,
filterable: true,
columns: [
{ title: "Name", field: "Name" },
{ title: "Status", field: "Status" },
{ title: "Type", field: "Type" }
]
});
});
示例XML:
<Items>
<Item>
<ID>1</ID>
<Name>First Item Name</Name>
<Status>Active</Status>
<Type>Online</Type>
</Item>
<Item>
<ID>2</ID>
<Name>Second Item Name</Name>
<Status>Inactive</Status>
<Type>External</Type>
</Item>
<TotalRows>22</TotalRows>
</Items>
我的问题瓦特/分页:总在数据源上设置似乎没有工作。网格页脚有“没有项目要显示”,而不是“22个项目中的1-20”,并且没有分页选项。我也不确定从网格传递的“take”和“skip”参数是什么(见下文)。
我的问题瓦特/排序/过滤:正在传递的排序和筛选参数是一些奇怪的格式的字符串:
/KendoDashboard/KendoController.cfc?method=getCoursesGrid&take=20&skip=0&page=1&pageSize=20&sort%5B0%5D%5Bfield%5D=Name&sort%5B0%5D%5Bdir%5D=desc&filter%5Blogic%5D=and&filter%5Bfilters%5D%5B0%5D%5Bfield%5D=Name&filter%5Bfilters%5D%5B0%5D%5Boperator%5D=eq&filter%5Bfilters%5D%5B0%5D%5Bvalue%5D=test
如果我看它在Firebug,参数被列为:
filter[filters][0][field] Name
filter[filters][0][operator] eq
filter[filters][0][value] test
filter[logic] and
method getCoursesGrid
page 1
pageSize 20
skip 0
sort[0][dir] desc
sort[0][field] Name
take 20
设置一个名为“filter”和一个字符串类型的cfargument,然后将其抛出只返回一个零(0)。当然,Coldfusion不会采用“filter [filters]”的参数名称,所以我在如何继续处理方面存在一些损失。
关于合计问题应该total'的'在值'schema'对象不'“/ Items/TotalRows“,''而不是''/ Items/Item/TotalRows”,'? – Michael
我认为使用LINQ时,take和skip参数很有用。当我使用带有SQL数据库后端的Kendo网格时,我刚刚使用pageSize和page参数来实现服务器端分页。可以在MySQL查询的LIMIT子句中使用pageSize和page。 – Michael
@迈克尔 - 你说得对,我已经纠正它,但仍然没有运气。感谢LIMIT的提示,我会看看。 – shimmoril