【问题标题】:Remove empty option from listData at CGridView filter从 CGridView 过滤器的 listData 中删除空选项
【发布时间】:2014-04-12 08:46:17
【问题描述】:

我想删除列表数据值的空选项或第一个选项。 我有 Bankaccount 模型,它有一个列表,所以我需要防止用户全选。

我已经选择了该列表的第一个作为默认值,但现在问题是可以让用户选择所有银行帐户的空选项仍然存在,所以我该如何删除。

这是我的代码

array(
        'name' => 'bank_account_id',
        'type' => 'raw',
        'value' => '$data->bankaccount->BankAccountName', 
        'filter' => Chtml::listData(Bankaccount::model()->findAll(array('order' => 'name  DESC')), "id", "BankAccountName"),
    ),

【问题讨论】:

    标签: yii filter cgridview


    【解决方案1】:

    如果您查看生成过滤器的this method,您会看到它在输入数组时总是添加空选项。因此,隐藏空选项的唯一方法是手动生成选择框:

    'filter' => CHtml::activeDropDownList(Bank::model(), 'bank_account_id',
        Chtml::listData(Bankaccount::model()->findAll(array('order' => 'name  DESC')), "id", "BankAccountName"),
        ),
    ),
    

    使用 CHtml::activeDropDownList 将在选择框名称中为您提供 Bank[bank_account_id]

    【讨论】:

      【解决方案2】:

      对于过滤器部分,

      'filter' => Chtml::dropdownList('Bank[bank_account_id]' , 'selectedDefault',
          Chtml::listData(Bankaccount::model()->findAll(array('order' => 'name  DESC')), "id", "BankAccountName"),
          ),
      ),
      

      【讨论】:

      • 谢谢 tinybyte,是的,它删除了空选项,但过滤不起作用,这就是结果
      • 应该是这样的:
      • 那么你应该命名它:Bank[bank_account_id],这应该修复你的过滤器,检查你的 ajax 参数由 gridview 发送
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      相关资源
      最近更新 更多