当前位置: 首页 > 知识库问答 >
问题:

剑道网格能否读取大量项目并在本地执行分页?

葛子昂
2023-03-14

我很难弄清楚如何创建一个REST API来为Kendo UI网格提供服务。选项#1-使用REST API进行分页,选项#2-一次读取整个结果集,并让网格控件处理分页。

以下是我在这两种情况下遇到的问题:

1) 我通过查询字符串传递Page和PageSize参数。该服务获取它们,查询数据模型,并仅返回请求的记录数(例如,第4页中的50项)。问题是分页控件随后会显示网格中项目数的页面大小。也就是说,如果我的页面大小为50,并且结果集中有3000条记录,那么网格将显示总共50条记录,并在第1页上显示一个“页面”按钮。如何强制Kendo UI网格使用记录总数?如何在不运行两次查询的情况下做到这一点(一次用于合计,另一次用于应用跳过和获取值)?

2) 我只有3000条记录,所以读取整个数据集真的没什么大不了的,但每次我点击“向前翻页”,我就会得到一个微调器,对整个数据集的请求就会再次发出。是否有任何方法可以告诉剑道网格吸收整个3000条记录集,但在本地分页,例如每页50条。

共有1个答案

公西天逸
2023-03-14

将serverPaging设置为false,这样它就不会每次都进行服务器调用。可以一次读取所有3000个数据,然后只对本地数据进行分页。这是演示。

var data =  new kendo.data.DataSource({
  serverPaging: false,
  pageSize: 5, 
  data: [
  	{firstName: 'John', lastName: 'A', Age: '10', Country: 'USA'}, 
  	{firstName: 'Max', lastName: 'B', Age: '20', Country: 'UK'}, 
  	{firstName: 'Luke', lastName: 'C', Age: '77', Country: 'Russia'}, 
  	{firstName: 'Raj', lastName: 'D', Age: '55', Country: 'France'}, 
  	{firstName: 'Peter', lastName: 'E', Age: '5', Country: 'Ghana'}, 
  	{firstName: 'Stan', lastName: 'F', Age: '51', Country: 'USA'}, 
  	{firstName: 'Mike', lastName: 'G', Age: '21', Country: 'India'}, 
  	{firstName: 'Lily', lastName: 'H', Age: '30', Country: 'USA'}, 
	{firstName: 'Lal', lastName: 'B', Age: '20', Country: 'UK'}, 
	{firstName: 'Sam', lastName: 'G', Age: '21', Country: 'India'},
        {firstName: 'Sean', lastName: 'G', Age: '47', Country: 'Aus'},
  ]
});

$('#grid').kendoGrid({
	dataSource: data, 
  columns: [
    {
      field: "firstName",
      title: "firstName",
      width: "120px"
    }, {
      field: "lastName",
      title: "lastName",
      width: "120px"
    }, {
      field: "Age",
      title: "Age",
      width: "120px"
    }, {
      field: "Country",
      title: "Country",
      width: "120px"
    }
  ],
  pageable: true,
  dataBound: function () {
    this.expandRow(this.tbody.find("tr.k-master-row").first());
  }
});
<head>
<title>Kendo UI Snippet</title>

    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.common.min.css"/>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.rtl.min.css"/>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.silver.min.css"/>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.mobile.all.min.css"/>

    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="https://kendo.cdn.telerik.com/2018.2.516/js/kendo.all.min.js"></script>
</head>
<body>
    <div id="grid"></div>
   </body>
 类似资料:
  • 有没有一种方法可以在不刷新整个数据源或使用jQuery为每个单元格设置值的情况下刷新单个剑道网格行?

  • 我想把剑道下拉列表加入我的表格。一切都会好的,除了一件事。当我想用默认的剑道创建工具栏“添加记录”时,我不能绑定从dropdownlist数据源获取的第一个值。 数据源工作正常。DropDownlist也很好用。如果我手动从dropDownlist中选择任何东西,一切正常。 我也试过了。除了“索引”之外,我试图手动从数据源中选择第一项。从视觉上看,它工作得很好。即使选择了第三项,但当我单击“更新”

  • 我在剑道网格上使用事件来显示几个隐藏的列。然后,我将在事件中再次隐藏它们。 我的问题是,似乎没有取消编辑模式的事件,所以如果用户单击取消,列会被搞砸。 是否有未记录的事件需要取消,还是需要找到解决方案?

  • 我对某些字段的验证有问题。我只想验证几个字段,其他字段不应该验证。在我的Email字段中,我启动了一个函数来检查格式是否正确,但其他字段只是设置为验证。任何帮助都将不胜感激。 使用此代码,在尝试保存/更新时将验证所有字段。我不想验证分机或电话号码。

  • 我可以通过下面的模板场景将剑道下拉列表添加到剑道网格中: 然而,问题是如何访问dropdownlist以获取其值/文本/索引。到目前为止,我可以使用以下方法获取所选行数据: 这里是JSFiddle代码 请帮帮我,我卡住了。 提前感谢。

  • 我无法编辑剑道网格内联和弹出两者。单击“保存”按钮时,我的操作方法无法获取当前编辑单元格的值。 控制器代码: 在控制器中,我只得到空值。请帮帮我,我想使用剑道mvvm教学。