GVKun编程网logo

php-Yii CGridView筛选器(php筛选功能)

15

本文将分享php-YiiCGridView筛选器的详细内容,并且还将对php筛选功能进行详尽解释,此外,我们还将为大家带来关于Dev中GridView筛选后的数据获取、php–yiiCGridView

本文将分享php-Yii CGridView筛选器的详细内容,并且还将对php筛选功能进行详尽解释,此外,我们还将为大家带来关于Dev中GridView筛选后的数据获取、php – yii CGridView过滤器与关系、php – Yii,在cgridview(表)值中显示工具提示、php – Yii奇怪的行为:CGridView组用的相关知识,希望对你有所帮助。

本文目录一览:

php-Yii CGridView筛选器(php筛选功能)

php-Yii CGridView筛选器(php筛选功能)

我希望CGridView的过滤器一次可以在一个列中使用多个单词.例如,我想在第一列中显示所有带有“ A”的行,并在同一列中显示所有带有“ B”的行.

有人知道我应该重写哪个类和函数吗?

解决方法:

您将必须在模型中修改search()函数. search()函数将具有以下内容-

    $criteria->compare('your_column_name', $this->your_column_name, true);

您可以通过破坏输入来修改它,该输入位于$this-> your_column_name中,并为输入中的每个元素添加一个比较条件.您可以使用explode()将字符串分成多个术语.

Dev中GridView筛选后的数据获取

Dev中GridView筛选后的数据获取

1.第一种方法:
if (gridView1.ActiveFilterCriteria != null)

            {

                var filteredDataView = new DataView(gridControl1.DataSource as DataTable);

                filteredDataView.RowFilter =

                    DevExpress.Data.Filtering.CriteriaToWhereClauseHelper.GetDataSetWhere(gridView1.ActiveFilterCriteria);

                var filterRecords = filteredDataView.ToTable();

                for (int i = 0; i < filterRecords.Rows.Count; i++)

                {

                   

                }

            }

2.第二种方法

DevExpress 的GridView竟然提供了相应的方法,但是奇怪的是编译器竟然没有显示,就是在GridView的基类BaseView中提供了DataController这个对象,查看了这个属性后发现竟然真的被屏蔽了,EditorBrowsable竟然是Never状态(我也表示一脸懵逼)

当然,屏蔽了,不代表他没有这个属性,那就一脸懵逼的使用吧,DataController提供一个获取过滤后和排序后的数据集的方法:GetAllFilteredAndSortedRows()

为了不每次都懵逼的去这样直接调用,最好还是写一个公用方法去调用吧

public System.Collections.IList GetGridViewFilteredAndSortedData(DevExpress.XtraGrid.Views.Grid.GridView view)

  {

    return view.DataController.GetAllFilteredAndSortedRows();

  }

 

php – yii CGridView过滤器与关系

php – yii CGridView过滤器与关系

我正在使用yii作为我的Web应用程序.在我的一个视图中,我有CGridView和dataprovider是Mail模型.在这个模型中,我与其他3个模型有关.在网格中,我显示了三个模型的cols.如何过滤CGridView?

更新:

<?PHP $dialog = $this->widget('ext.ecolumns.EColumnsDialog',array(
           'options'=>array(
                'title' => 'Layout settings','autoOpen' => false,'show' =>  'fade','hide' =>  'fade',),'htmlOptions' => array('style' => 'display: none'),//disable flush of dialog content
           'ecolumns' => array(
                'gridId' => 'mails-grid',//id of related grid
                'storage' => 'session',//where to store settings: 'db','session','cookie'
                'fixedLeft' => array('CCheckBoxColumn'),//fix checkBox to the left side 
                'model' => $dataprovider,//model is used to get attribute labels
                'columns'=>array(
                                array(
                                    'name'=>'mailTemplate.name','filter'=>CHtml::activeTextField($dataprovider,'mailTemplate'),'sendDate',array(
                                        'name'=>'mailTemplate.subject',array(
                                'name'=>'client.email','client'),array(
                                'name'=>'client.name',array(
                                'name'=>'operator.username','operator'),array(
                                'name'=>'status','value'=>array('MailHelper','getEmailStatus'),'filter'=> CHtml::activeDropDownList($dataprovider,'status',Mail::getEmailStatuses()),array(
                                'class'=>'CButtonColumn','template'=>'{update}','buttons'=>array(
                                                'update' => array(
                                                        'url'=>'$this->grid->controller->createUrl("/email/editTemplate",array("templateId"=>$data->id))',)
                        ),)
    ));

?>

<?PHP $this->widget('zii.widgets.grid.CGridView',array(
    'id' => 'mails-grid','dataProvider'=>$dataprovider->search(),'columns' => $dialog->columns(),'filter' => $dataprovider,'template' => $dialog->link()."{summary}\n{items}\n{pager}",)); ?>

解决方法

我有餐厅,城市,乡村和用户模型,他们之间的关系.

模型:

public function search() {
  $criteria=new CDbCriteria;
  $criteria->together = true;
  $criteria->with= array('xCountry','xCity','User');
  $criteria->compare('Id',$this->Id,true);
  $criteria->compare('Restaurant.Name',$this->Name,true);
  $criteria->addSearchCondition('xCountry.Name',$this->Country);
  $criteria->addSearchCondition('xCity.Name',$this->City);
  $criteria->compare('Zip',$this->Zip,true);
  $criteria->compare('Address',$this->Address,true);
  $criteria->compare('Description',$this->Description,true);
  $criteria->compare('Restaurant.Active',$this->Active,true);
  $criteria->addSearchCondition('User.Username',$this->Owner);
  $criteria->compare('Lat',$this->Lat);
  $criteria->compare('Lon',$this->Lon);

  return new CActiveDataProvider($this,array(
    'criteria'=>$criteria,));
}

视图:

$this->widget('zii.widgets.grid.CGridView',array(
      'id'=>'restaurant-grid','dataProvider'=>$model->search(),'filter'=>$model,'columns'=>array(
        'Id','Name','Zip','Address','Active',array(
          'name' => 'User.Username','header' => 'Username','filter' => CHtml::activeTextField($model,'Owner'),'value' => '$data->User->Username',array(
          'name' => 'xCountry.Name','header' => 'Country','Country'),'value' => '$data->xCountry->Name',array(
          'name' => 'xCity.Name','header' => 'City','City'),'value' => '$data->xCity->Name',array(
        'class'=>'CButtonColumn',));

我希望这可以帮到你.

更新:

如果您尝试这样的事情怎么办:

...
'columns'=>array(
  'mailTemplate.name','mailTemplate.subject','client.email',...

更新#2:

准备好自己这会有点脏.

假设我们有两个类,A和B. B属于A.
B有一个属性,让我们说“颜色”,我们想在我们列出“A”的网格中显示它.

您要做的第一件事是,手动为数据提供程序类创建属性(什么是“A”).
此属性将为“colorOfB”,因此您必须添加“public $colorOfB;”你的模特A.

添加此属性的条件:

$criteria->compare('B.color',$this->colorOfB,true);

将列添加到网格:

array(
  'name' => 'B.color','header' => 'Color of B','colorOfB'),'value' => '$data->B->color'),

最后一件事是在A的控制器中手动设置此属性:

$modelA = new A('search');
$modelA->colorOfB = $_GET['A']['colorOfB'];

php – Yii,在cgridview(表)值中显示工具提示

php – Yii,在cgridview(表)值中显示工具提示

我想在cgridview值中显示工具提示,因为在列上悬停它必须显示存储在变量中的整个内容.
我想在变量$data [“comment”]中显示为工具提示(标题),目前它将整个字符串显示为 – $data [“comment”].
array(
                        'name'=>'Comment','header'=>'Comment','value'=>'(strlen($data["comment"])>35)?substr($data["comment"],35)."..":$data["comment"];','htmlOptions'=>array('title'=>'$data["comment"]'),// this what i have do
                    ),
试试这个:
array(
    'name'=>'Comment','type'=>'raw','value'=>'( strlen($data["comment"]) > 35
        ? CHtml::tag("span",array("title"=>$data["comment"]),CHtml::encode(substr($data["comment"],35)) . "..")
        : CHtml::encode($data["comment"])
    );',),

php – Yii奇怪的行为:CGridView组用

php – Yii奇怪的行为:CGridView组用

我有一种奇怪的行为,我将尝试解释.

我正在构建一个报告系统,其中每个用户都可以让其他用户报告他们的个人资料,图片或消息.

在后端,我想显示一个CGridView,其中每个用户连续出现,并报告总时间.

要做到这一点,我正在添加组标准,它运作良好.

但是,如果我想通过任何相关字段过滤视图,我必须添加标准,它适用于过滤或搜索,但结果的总显示不正确显示显示1-2的15结果(s )当它应该显示在报告表中显示2个结果中的1-2时我有15行但只有两个用户,还添加了一个不存在的分页.

车型/ Report.PHP

public function relations()
{
    return array(
        'reported' => array(self::BELONGS_TO,'User','reported_id'),);
}

public function search()
{
    $criteria = new CDbCriteria();
    $criteria->select = array(
        '*','count(*) as reports_count',);
    $criteria->group = 't.reported_id';
    $criteria->with = array('reported');

    return new CActiveDataProvider($this,array(
        'criteria' => $criteria,'sort'=>array(
            'attributes'=>array(
                'status_search'=>array(
                    'asc'=>'reported.user_status_id','desc'=>'reported.user_status_id DESC',),'reports_count' => array(
                    'asc' => 'reports_count ASC','desc' => 'reports_count DESC','*',));
}

更新:我发现解决方案使用join而不是选择我需要的字段而不是用*选择所有字段:

$criteria->select = array(
        't.id,t.reported_id',);
$criteria->group = 't.reported_id';
$criteria->join = 'LEFT JOIN user u on u.id = t.reported_id';

解决方法

当使用CActiveDataprovider时,YII不使用条件中建立的’with’来执行’totalItemCount’,因此它将说明没有的结果总数.我建议你手动添加连接条件来克服这个问题:)

$criteria->join = 'left join User u on u.id=t.reported_id'

并删除$criteria->选择并使用CActiveDataProvider的’totalItemCount’方法.

关于php-Yii CGridView筛选器php筛选功能的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Dev中GridView筛选后的数据获取、php – yii CGridView过滤器与关系、php – Yii,在cgridview(表)值中显示工具提示、php – Yii奇怪的行为:CGridView组用的相关信息,请在本站寻找。

本文标签: