我需要使用自定义文本字段过滤CGridView。我有自定义dataprovider(CSqlDataProvider),我返回并填充表。表很好,但对我来说似乎很痛苦的是过滤它。我花了几个小时试图解决这个问题并且支持很差。 我看到有一些用于更新CGridView的jQuery方法,它需要'数据'参数,其值我不知道如何格式化。这是我在/ create文件中我需要这个东西的地方。
PHP:
<?php
Yii::app()->clientScript->registerScript('search', "
$('.search-form form').submit(function(){
$.fn.yiiGridView.update('studentiSaSmjeraData', {
data: $(this).serialize(), -----------> this should be changed to get data from my text input using GET I guess, but I dont know the format
});
return false;
});
");
?>
HTML和PHP考虑搜索表单:
<div class="search-form">
<p>
Pretraga po broju indeksa:
</p>
<?php $form=$this->beginWidget('CActiveForm', array(
'action'=>Yii::app()->createUrl($this->route),
'method'=>'get',
)); ?>
<div class="row">
Broj indeksa: <input type="text" class="br_ind" name="br_ind" id="br_ind" value=""></input>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Search'); ?>
</div>
<?php $this->endWidget(); ?>
</div>
我希望将此文本与dataProvider进行比较的列名为&#39; br_ind&#39;。
修改 似乎输入字段名称和id也必须对此做一些事情(它们应该采用某种特定的格式)。我的问题是 - 数据不是来自任何特定模型。它是通过表格产品和两个表格的一些额外约束获得的,因此我没有特定的模型来使用过滤器或任何在Yii中具有(afaik)支持的模型。但我想要的东西看起来很简单,但对我来说却变成了噩梦。关于函数参数的文档很差。 希望有人能提供帮助。任何人都碰到了这个并且无法解决它?
答案 0 :(得分:0)
$.fn.yiiGridView.update()
在幕后使用jQuery的ajax
函数(如果为网格启用了ajax更新)。您可以查看details on the data parameter的jQuery文档以及可以传递给.ajax()
的其他选项。
正如您当前正在使用$(this).serialize()
那样,应该将jQuery添加br_ind=whatever_the_value_is
作为查询字符串参数添加到服务器的GET
请求中(同样,假设您使用的是GET,请不要查看使用POST或其他动词但没有提供足够信息的原因)。使用浏览器的开发人员工具验证所请求的URL和响应内容。
然后是服务器是否正在正确处理请求。你没有提供任何细节,所以我无法帮助你。
答案 1 :(得分:0)
这是一个样本
$.fn.yiiGridView.update('activity-grid', {
data: 'Activity[Type]='+tp+'&Activity[idAgent]='+agent+'&Activity[StartTime]='+start+'&Activity[EndTime]='+end
});
在这个例子中,在服务器端,你只需要获得$ _GET [Activity]