1

YiiBootstrapTbGridViewでは、このように並べ替えるために、列ヘッダーはデフォルトで ^ になっています。

\protected\extensions\bootstrap\widgets\TbDataColumn.php28行目のファイルに記載されています

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

このため、ラベルの横に下向き矢印が付いた列ヘッダーとして表示されます。

列ヘッダーの横にキャレット記号を付けないようにしたいのですが、ソース ウィジェットでこれを変更したくありません。これは、拡張機能の更新で将来問題が発生する可能性があるためです。

TbGridViewウィジェット自体のプロパティでこれを行う方法はありますか?

4

2 に答える 2

1

その列の並べ替えを無効にしたくない場合 (無効にすることもできます)、唯一の方法は独自のウィジェットを使用することです。このTbDataColumnクラスは、何らかの理由で TbGridView にハード コードされているためです。(ここで参照できますソース

から継承し、その関数をオーバーライドして、代わりにクラスTbGridViewを呼び出す関数に置き換えることができます。EDataColumn次に、ETbDataColumnからの継承で同じことを行い、TbDataColumn必要な関数をオーバーライドするだけです。

例えば

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);
     ......

しかし、恩返しをしたいという気持ちがある場合は、いつでも YiiBootstrapTbGridViewを変更して、パラメータを使用して使用する列クラスを決定し、ここから YiiBootstrap にプル リクエストを送信できます: https://bitbucket.org/Crisu83/yii-bootstrap /pull-requests ソースコードに変更を加えて、他のすべての人のためにこの問題を解決するには:)

于 2013-01-11T08:36:33.333 に答える