gpt4 book ai didi

grid - Web 网格服务器分页在更改页面时触发多个 Controller 调用

转载 作者:行者123 更新时间:2023-12-01 12:55:43 26 4
gpt4 key购买 nike

当我在“au”我的网络网格上进行服务器过滤并更改页面时,对 Controller 的多次调用已完成:

  1. 第一个0过滤,
  2. 第二个带有“a”过滤,
  3. 第三个带有“au”过滤。

我的表加载了大量数据,因此第一次调用比其他调用时间长。我看到网格首先显示第三个调用结果,然后是第二个,最后是第一个调用(由于过滤器参数,此顺序对应于我的 Controller 的响应时间)

为什么要进行所有 Controller 调用?不能只用我的总过滤器“au”调用一次我的 Controller 吗?我该怎么办?

这是我的网格:

$("#" + gridId).kendoGrid({
selectable: "row",
pageable: true,
filterable:true,
scrollable : true,
//scrollable: {
// virtual: true //false // Bug : Génère un affichage multiple...
//},
navigatable: true,
groupable: true,
sortable: {
mode: "multiple", // enables multi-column sorting
allowUnsort: true
},
dataSource: {
type: "json",
serverPaging: true,
serverSorting: true,
serverFiltering: true,
serverGrouping:false, // Ne fonctionne pas...
pageSize: '@ViewBag.Pagination',
transport: {
read: {
url: Procvalue + "/LOV",
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8"
},
parameterMap: function (options, type) {
// Mise à jour du format d'envoi des paramètres
// pour qu'ils puissent être correctement interprétés côté serveur.
// Construction du paramètre sort :
if (options.sort != null) {
var sort = options.sort;
var sort2 = "";
for (i = 0; i < sort.length; i++) {
sort2 = sort2 + sort[i].field + '-' + sort[i].dir + '~';
}
options.sort = sort2;
}
if (options.group != null) {
var group = options.group;
var group2 = "";
for (i = 0; i < group.length; i++) {
group2 = group2 + group[i].field + '-' + group[i].dir + '~';
}
options.group = group2;
}
if (options.filter != null) {
var filter = options.filter.filters;
var filter2 = "";
for (i = 0; i < filter.length; i++) {
// Vérification si type colonne == string.
// Parcours des colonnes pour trouver celle qui a le même nom de champ.
var type = "";
for (j = 0 ; j < colonnes.length ; j++) {
if (colonnes[j].champ == filter[i].field) {
type = colonnes[j].type;
break;
}
}

if (filter2.length == 0) {
if (type == "string") { // Avec '' autour de la valeur.
filter2 = filter2 + filter[i].field + '~' + filter[i].operator + "~'" + filter[i].value + "'";
} else { // Sans '' autour de la valeur.
filter2 = filter2 + filter[i].field + '~' + filter[i].operator + "~" + filter[i].value;
}
} else {
if (type == "string") { // Avec '' autour de la valeur.
filter2 = filter2 + '~' + options.filter.logic + '~' + filter[i].field + '~' + filter[i].operator + "~'" + filter[i].value + "'";
}else{
filter2 = filter2 + '~' + options.filter.logic + '~' + filter[i].field + '~' + filter[i].operator + "~" + filter[i].value;
}
}
}
options.filter = filter2;
}
var json = JSON.stringify(options);
return json;
}
},
schema: {
data: function (data) {
return eval(data.data.Data);
},
total: function (data) {
return eval(data.data.Total);
}
},
filter: {
logic: "or",
filters:filtre(valeur)
}
},
columns: getColonnes(colonnes)
});

这是我的 Controller :

[HttpPost]
public ActionResult LOV([DataSourceRequest] DataSourceRequest request)
{
return Json(CProduitsManager.GetProduits().ToDataSourceResult(request));
}

最佳答案

3对应初始加载(无过滤),后面的是你在过滤条件中输入的,类似kendoAutocomplete但是在kendoAutocomplete中有一个控制何时发送请求的几个选项(时间和最小长度)(我在网格中找不到类似的东西)。

如果您的问题是加载大量数据,我建议您在 DataSource 定义中使用 pageSize 限制传输数据的大小。但是,很明显,如果执行查询需要很长时间,这不是解决方案。

关于grid - Web 网格服务器分页在更改页面时触发多个 Controller 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com