1

Created By当我从其他模型(管理员)关系中调用值时,为什么文本框会在下面消失。无论模型关系如何,如何让文本框显示?

有关该问题的更多信息,请参阅屏幕截图:

截屏

4

2 回答 2

0

Yii CGridView 不会为那些不属于所示表格的列创建 inputFiled(与关系一样)。如果要显示过滤器框(下拉菜单或任何您想要的,一种简单的方法是创建一个自定义 CDataColumn 并在您的网格中使用它:

array(
    'name'=>'customer.createdBy.name',
    'header' => 'Created by',
    'class' => 'application.modules.mine.components.DataColumnCreatedBy',
),

现在定义您的扩展列以呈现过滤器:

class DataColumnCreatedBy extends CDataColumn
{
    public function renderFilterCell()
    {
        echo "<td>";
        echo CHtml::inputField('createdBy');
        echo "</td>";
    }
}
于 2012-06-13T12:56:58.300 回答
0

最好的解决方案是添加下拉列表,因为您必须在 createdBy 字段中有 ID,并且不希望用户使用数字 ID 进行搜索。下面的文章可以帮助你

http://help.discretelogix.com/php/yii/replace-text-box-with-drop-down-list-in-filter-of-cgridview.htm

如果您仍想添加文本框,则只需将文本框 html 分配给<input type="text" name="ModelName[createdBy]">CDataColumn 的“过滤器”属性

'column_id'=> array(
        'name' => 'createdBy',
        'value' => '$data->relatedModel->createdBy',
        'filter'=> '<input type="text" name="ModelName[createdBy]">'

),

希望这可以帮助

于 2012-06-13T13:11:28.097 回答