- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 kendo UI 的新手,我正在尝试使用 Webapi 实现 Kendo 网格,分页没有任何效果下面是代码。应用程序接口(interface)
public IList<Customer> GetCustomers(int take, int skip)
{
this.Customers = FillData.Customers;
this.Orders = FillData.Orders;
return Customers.Skip(skip).Take(take).ToList();
}
和javascript
$(document).ready(function () {
var element = $("#grid").kendoGrid({
dataSource: {
type: "json",
transport: {
read: "/api/GridData/GetCustomers",
dataType: "json"
},
pageSize: 6,
serverPaging: true,
},
height: 600,
sortable: true,
pageable: true,
//detailInit: detailInit,
//dataBound: function () {
// this.expandRow(this.tbody.find("tr.k-master-row").first());
//},
columns: [
{
field: "FirstName",
title: "First Name",
width: "110px"
},
{
field: "LastName",
title: "Last Name",
width: "110px"
},
{
field: "Country",
width: "110px"
},
{
field: "City",
width: "110px"
},
{
field: "Title"
}
]
});
});
与 telerik 提供的 Odata 服务相同的东西运行良好。
最佳答案
几个月前我写了一篇博文 - Kendo UI Grid - Server Side Paging, Filtering and Sorting .这应该可以解决您的查询。帖子的主要重点是向 WebAPI 发送正确的参数。我已经展示了示例网格和数据源代码以及发送到 WebAPI 的请求和响应对象。如果您需要任何解释,请告诉我。
编辑:将所有内容都张贴在这里,因为仅链接是不受欢迎的。
网格
下面是一个 Kendo UI Grid 声明,我们将为其实现服务器端操作。
$("#sampleGrid").kendoGrid({
columns: [
{ field: "ID", title: "ID", width: 50 },
{ field: "Label", title: "Label", template: "<span class='k-link bold' title='${Description}'>${Label}</span>" },
{ field: "Description", title: "Description" }
],
dataBound: function () { this.element.find('tbody tr:first').addClass('k-state-selected') },
pageable: {
refresh: true,
pageSizes: [10, 15, 20, 25]
},
resizable: true,
reorderable: true,
filterable: true,
groupable: true,
selectable: true,
sortable: true
});
数据源
下面的数据源向服务器方法发送调用,地址保存在 svcSampleUrl 中并在“传输”属性中分配给它。不需要单独进行ajax调用来获取数据源的数据,
将 serverPaging、serverFiltering 和 serverSorting 设置为 true 可使 Kendo UI Grid DataSource 在用户触发以下任一事件时发送服务器调用;页面更改、过滤器更改以及列排序更改。
var sampleDataSource = new kendo.data.DataSource({
transport: {
read: {
url: svcSampleUrl,
contentType: "application/json; charset=utf-8",
type: "POST",
dataType: "json"
},
parameterMap: function (options) {
model.Take = options.take;
model.Skip = options.skip;
model.Sort = options.sort;
model.Filter = options.filter;
return kendo.stringify(model);
}
},
schema: {
data: "sampleDTOList",
// another way to accept the response if some particular values need processing
//data: function (response) {
// //some implementation with the response values
// return response.WorklistDTOList;
//},
total: "totalItems",
model: {
fields: {
ID: { type: "number" },
Label: { type: "string" },
Description: { type: "string" }
}
}
},
serverPaging: true,
serverFiltering: true,
serverSorting: true,
pageSize: 10,
});
参数映射属性允许我们将一组默认参数与自定义参数一起发送回服务器。默认参数包括“take”、“skip”、“sort”和“filter”,分别对应于页面大小、要跳过的记录数量、排序条件和过滤条件数组。由于可能还需要发送其他参数,因此在具有其他值的模型中设置默认参数值。 Kendo.stringify 应用于模型并作为完整的请求对象返回。
数据和总计
DataSource 模式包含两个属性; “数据”和“总计”。其中每一个都是我们期望结果的响应对象中的属性名称。我已将“sampleDTOList”分配给“数据”属性,因为我的响应对象将包含该名称下的记录列表。同样,我已将“totalItems”分配给“total”属性。 “总计”属性接受所有记录计数的数值,而不管当前页面上返回了多少。这样 DataSource 就知道实际有多少条记录以及要显示多少页。
注意:此处不探讨该模型,仅作为可使用的任何模型的占位符进行引用。
请求
Request 对象包含作为 DataSource 设置为发送到服务器的默认和自定义参数的确切属性。
public class FilterDTO
{
public int Take { get; set; }
public int Skip { get; set; }
public List<SortCriteria> Sort { get; set; }
public List<FilterCriteria> Filter { get; set; }
public string ID { get; set; }
}
public class SortCriteria
{
public string field { get; set; }
public string dir { get; set; }
}
public class FilterCriteria
{
public string field { get; set; }
public string operator { get; set; }
public string value { get; set; }
}
服务器端
这是我们接收调用的地方,其中包含操作数据所需的所有参数。这是一个简单的方法,可以使用所有参数调用数据库存储过程以获取过滤结果。然后,存储过程应根据给定的页面大小、要跳过的记录数量、排序条件、过滤条件数组以及我已由调用请求中包含的模型发送的任何其他过滤参数返回数据集。但需要根据我们掌握的信息计算页码。
[HttpPost]
[ActionName("GetItems")]
public SampleResponse GetItems(FilterDTO filterDTO)
{
//Calling a different layer for the read operation based in the parameter values
return BusinessLayer.GetItems(filterDTO);
}
页码
由于我们从应用程序的客户端接收到“take”和“skip”,因此根据给定的信息很容易计算所需的分页数。当我们知道页面大小和要跳过的记录数量时,我们可以通过应用以下规则来获取页码:
pageNo = (skip + take) / take
回应
Response对象包含前面提到的DataSource需要的两个属性;一种用于“数据”,一种用于架构的“总”属性。
public class SampleResponse : BaseResponse
{
private List<SampleItems> SampleDTOList;
public List<SampleItems> sampleDTOList
{
get { return SampleDTOList; }
set { SampleDTOList = value; }
}
public int totalItems { get; set; }
}
关于asp.net-web-api - 即使定义了页面大小,Kendo Grid 也会显示所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509092/
尝试使用集成到 QTCreator 的表单编辑器,但即使我将插件放入 QtCreator.app/Contents/MacOS/designer 也不会显示。不过,相同的 dylib 文件确实适用于独
在此代码示例中。 “this.method2();”之后会读到什么?在返回returnedValue之前会跳转到method2()吗? public int method1(int returnedV
我的项目有通过gradle配置的依赖项。我想添加以下依赖项: compile group: 'org.restlet.jse', name: 'org.restlet.ext.apispark', v
我将把我们基于 Windows 的客户管理软件移植到基于 Web 的软件。我发现 polymer 可能是一种选择。 但是,对于我们的使用,我们找不到 polymer 组件具有表格 View 、下拉菜单
我的项目文件夹 Project 中有一个文件夹,比如 ED 文件夹,当我在 Eclipse 中指定在哪里查找我写入的文件时 File file = new File("ED/text.txt"); e
这是奇怪的事情,这个有效: $('#box').css({"backgroundPosition": "0px 250px"}); 但这不起作用,它只是不改变位置: $('#box').animate
这个问题在这里已经有了答案: Why does OR 0 round numbers in Javascript? (3 个答案) 关闭 5 年前。 Mozilla JavaScript Guide
这个问题在这里已经有了答案: Is the function strcmpi in the C standard libary of ISO? (3 个答案) 关闭 8 年前。 我有一个问题,为什么
我目前使用的是共享主机方案,我不确定它使用的是哪个版本的 MySQL,但它似乎不支持 DATETIMEOFFSET 类型。 是否存在支持 DATETIMEOFFSET 的 MySQL 版本?或者有计划
研究 Seam 3,我发现 Seam Solder 允许将 @Named 注释应用于包 - 在这种情况下,该包中的所有 bean 都将自动命名,就好像它们符合条件一样@Named 他们自己。我没有看到
我知道 .append 偶尔会增加数组的容量并形成数组的新副本,但 .removeLast 会逆转这种情况并减少容量通过复制到一个新的更小的数组来改变数组? 最佳答案 否(或者至少如果是,则它是一个错
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
noexcept 函数说明符是否旨在 boost 性能,因为生成的对象中可能没有记录异常的代码,因此应尽可能将其添加到函数声明和定义中?我首先想到了可调用对象的包装器,其中 noexcept 可能会产
我正在使用 Angularjs 1.3.7,刚刚发现 Promise.all 在成功响应后不会更新 angularjs View ,而 $q.all 会。由于 Promises 包含在 native
我最近发现了这段JavaScript代码: Math.random() * 0x1000000 10.12345 10.12345 >> 0 10 > 10.12345 >>> 0 10 我使用
我正在编写一个玩具(物理)矢量库,并且遇到了 GHC 坚持认为函数应该具有 Integer 的问题。是他们的类型。我希望向量乘以向量以及标量(仅使用 * ),虽然这可以通过仅使用 Vector 来实现
PHP 的 mail() 函数发送邮件正常,但 Swiftmailer 的 Swift_MailTransport 不起作用! 这有效: mail('user@example.com', 'test
我尝试通过 php 脚本转储我的数据,但没有命令行。所以我用 this script 创建了我的 .sql 文件然后我尝试使用我的脚本: $link = mysql_connect($host, $u
使用 python 2.6.4 中的 sqlite3 标准库,以下查询在 sqlite3 命令行上运行良好: select segmentid, node_t, start, number,title
我最近发现了这段JavaScript代码: Math.random() * 0x1000000 10.12345 10.12345 >> 0 10 > 10.12345 >>> 0 10 我使用
我是一名优秀的程序员,十分优秀!