2014-12-19 73 views
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]”的参数名称,所以我在如何继续处理方面存在一些损失。

+0

关于合计问题应该total'的'在值'schema'对象不'“/ Items/TotalRows“,''而不是''/ Items/Item/TotalRows”,'? – Michael

+0

我认为使用LINQ时,take和skip参数很有用。当我使用带有SQL数据库后端的Kendo网格时,我刚刚使用pageSize和page参数来实现服务器端分页。可以在MySQL查询的LIMIT子句中使用pageSize和page。 – Michael

+0

@迈克尔 - 你说得对,我已经纠正它,但仍然没有运气。感谢LIMIT的提示,我会看看。 – shimmoril

回答

0

您可以设置总为

total: function(response) { 
    return response.Items.TotalRows; 
} 

而在response变量看,如果事情是错的