【问题标题】:Yii CGridView filter not working on one columnYii CGridView 过滤器不适用于一列
【发布时间】:2013-02-04 08:50:15
【问题描述】:

好的。开始了。 我有一个常规的 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'),
),

什么都没有改变。它仍然不想发送过滤器的正确值。

我该怎么办?

谢谢!!!

【问题讨论】:

  • $model->onboard是什么类型的字段?是数字、文本还是外键?
  • 只是一个数字。它是 0、1 或 2
  • 所以你想放置一个下拉列表作为过滤器?
  • 我想让这个过滤器工作。现在它没有任何类型的控件(下拉、单选或文本)。
  • 添加了一个答案。请检查它的工作与否

标签: javascript jquery filter yii cgridview


【解决方案1】:

由于$model->onboard 是您在 cmets 中指定的枚举,您可能需要使用下拉列表过滤器。要在CDataColumn 中渲染过滤器,您必须将其指定为数组。所以代码将是

array(
    'name' => 'onboard',
    'type' => 'raw',
    'value'=>'$data->getOnBoardLabel()',
    'filter' => Lookup::items('onboard'),
),

【讨论】:

    【解决方案2】:

    对不起各位。 页面上有另一个 noboard 控件。所以序列化的行为很奇怪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多