[英]Kendo ui grid - filter with ajax post
我正在尝试过滤我的数据源,但使用的是ajax发布,原因是,我在服务器端的主main GET上有这样的条件:
WHERE idPai IS NULL OR idPai = 0
现在我想要的是过滤datsource,但在服务器端没有该条件,所以首先要做的是:
var value = $("#inputPastaFiltro").val();
$.ajax({
type: 'POST',
url: "basedados.php",
data: {dataFilter:value},
dataType: "json",
success: function(result)
{
$('#gridBaseDados').data('kendoGrid').dataSource = new kendo.data.DataSource({ data: result.data[0] }).query({
filter:{
logic:"or",
filters:[
{field:"nome", operator:"contains",value:result.data[0].nome}]
}
});
},
在服务器端,我创建了:
else if($_POST['dataFilter'])
我有相同的GET但没有上面已经写过的条件,以这种方式(我认为)它可以搜索所有内容,但是您已经意识到其余的逻辑是不正确的。 如果我这样做:
var value = $("#inputPastaFiltro").val();
dataSource.query({
filter:{
logic:"or",
filters:[
{field:"nome", operator:"contains",value:value}]
}
});
它很好地工作,并且它还执行了动态搜索,只要在输入中插入单词就刷新网格(这太棒了!)...但是它基于具有这种条件的我的MAIN GET。
谁能帮我些忙吗?抱歉英语不好。
问候。
使用数组result.data[0]
创建dataSource后,将对该数据执行过滤 。 所以我认为您想在执行过滤器时再次执行查询,对吗? 与kendo一起使用时,您调用ajax请求的方式不太好。 您应该这样做:
$('#gridBaseDados').kendoGrid({
...
dataSource: {
transport: {
read: function(options) {
$.ajax({
...
success: function(result) {
options.success(result.data[0]);
}
});
}
}
}
});
最好在dataSource.transport.read
使用一个函数。 因此,您具有options
参数,该参数具有dataSource的success
回调。 这将覆盖默认dataSource的请求,然后保留整个行为。 您的过滤器应该可以正常工作。 他们将在每次更改该read
函数时对其进行调用。
试试看,并告诉我们结果。 希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.