好。开始了。 我有一个常规的CGridView来过滤我的数据。
这是标题:
除“船上”以外的所有过滤器都能正常工作。事情是:它不适用于“序列化”javascript阶段。 所以当jquery.yiigridview.js运行这段代码时:
$('body').undelegate(inputSelector, 'change').delegate(inputSelector, 'change', function(){
var data = $(inputSelector).serialize();
if(settings.pageVar!==undefined)
data += '&'+settings.pageVar+'=1';
$.fn.yiiGridView.update(id, {data: data});
});
无论我写入文本字段,Serialize都会返回“Anketa [onboard] = 0”。 我尝试了所有类型的控件(当我认为这是服务器端问题时):
array(
'name' => 'onboard',
'type' => 'raw',
'value'=>'$data->getOnBoardLabel()',
//'filter' => CHtml::activeCheckBox($model,'onboard'),
//'filter' => CHtml::activeDropDownList($model, 'onboard',Lookup::items('onboard')),
'filter' => CHtml::activeTextField($model,'onboard'),
),
并没有改变。它仍然不想发送过滤器的正确值。
我应该怎么做?
谢谢!!!
答案 0 :(得分:0)
由于$model->onboard
是您在评论中指定的枚举,因此您可能需要使用下拉列表过滤器。要在CDataColumn
中渲染渲染过滤器,您必须将其指定为数组。所以代码将是
array(
'name' => 'onboard',
'type' => 'raw',
'value'=>'$data->getOnBoardLabel()',
'filter' => Lookup::items('onboard'),
),
答案 1 :(得分:0)
对不起伙计们。 页面上还有另一个noboard控件。所以序列化很奇怪。