Yii Bootstrap Gridview列标题显示插入符号

时间:2013-01-10 05:07:20

标签: twitter-bootstrap yii

在YiiBootstrap TbGridView中,列标题默认为^以进行排序。

它在第28行的\protected\extensions\bootstrap\widgets\TbDataColumn.php文件中提及,如

if ($sort->resolveAttribute($this->name) !== false)
    $label .= '<span class="caret"></span>';

因为它显示为列标题,标签旁边有向下箭头。

我希望我的列标题旁边没有插入符号,但我不想在源小部件中更改它,因为这意味着将来更新扩展时会出现问题。

有没有办法用TbGridView小部件本身的属性做这个?

2 个答案:

答案 0 :(得分:1)

如果您不想在该列上禁用排序(也可以删除它),那么您唯一的方法就是使用自己的小部件。因为TbDataColumn类由于某种原因硬编码到TbGridView中。 (你可以在这里看到Source

您可以从TbGridView继承,覆盖该函数并将其替换为调用EDataColumn类的函数。然后,您可以使用ETbDataColumn中的TbDataColumn继承执行相同操作,并覆盖您需要的功能。

e.g。

Yii::import('Bootstrap.widgets.TbGridView');
Yii::import('ext.widgets.ETbDataColumn');

/**
 * Bootstrap grid data column.
 */
class ETbGridView extends TbGridView
{

    public function createDataColumn($text)
    {
         if (!preg_match('/^([\w\.]+)(:(\w*))?(:(.*))?$/', $text, $matches))
                    throw new CException(Yii::t('zii', 'The column must be specified in the format of "Name:Type:Label", where "Type" and "Label" are optional.'));

            $column = new ETbDataColumn($this);
     ......

但是如果你感觉有回馈心情,你可以随时更改YiiBootstrap TbGridView以使用参数来确定要使用的列类,并在此处向YiiBootstrap提交拉取请求:https://bitbucket.org/Crisu83/yii-bootstrap/pull-requests 要获得源代码中的更改并为其他人解决此问题:)

答案 1 :(得分:0)

我知道我正在回答一个旧问题,但希望这会帮助其他人寻找解决方案。以下是我解决此问题的方法:

假设原始问题是关于在排序中未使用的列上隐藏插入符号,以下css更改应该有助于实现结果而不进行扩展源代码更改。我认为在所有可排序列上显示插入符号是一个错误,而插入符号应仅出现在用于对当前结果集进行排序的列上,并且它应该有正确的方向。

.grid-view thead .caret {
    display: none;
}

.grid-view thead .asc .caret,
.grid-view thead .desc .caret {
    display: inline-block;
}

.grid-view thead .asc .caret {
    border-top: none;
    border-bottom: 4px solid;
}