In a gridview, how to set the first option of a dropdown list for a filter to "All" instead of empty string?

In a gridview, if I set the "filter" property of a column as an array, the filter will be rendered as a dropdown list by default, with the first option is an empty string meaning no filtering. How can I set to render the first option as "All" instead of an empty string?

I think that is not possible with a simple array, you have to do on your own:

'filter'->CHtml::activeDropDownList($model, 'attribute', array(['']), array('prompt'=>'All'));

Do you think this should be submitted as an issue at the tracker? BTW, what’s the difference between “empty” and “prompt” in the $htmlOptions argument?

Check the documentation for activeDropDownList -

Yes, I’ve read the docs. It seems to me that the only difference is that “the ‘empty’ option can also be an array of value-label pairs. Each pair will be used to render a list option at the beginning.”

If a string is given, they generate the same HTML. Seems that we can always use ‘empty’


I appreciate this post, following are my codes that fixed my scenario:




                    'filter'=>CHtml::activeDropDownList($model, 'scheduledExam', array(date("Y-m-d")=>'Today'), array('prompt'=>'All')),



                    'htmlOptions'=>array('style'=>'text-align: left; padding-left: 0.5em'),