首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用其列值手动更新Cgridview

使用其列值手动更新Cgridview
EN

Stack Overflow用户
提问于 2014-01-04 16:11:09
回答 1查看 868关注 0票数 0

我想使用它的列值更新cgridview,例如,如果我想从网格中过滤名称'xxx‘,如何在

代码语言:javascript
复制
 $.fn.yiiGridView.update("editstructure-grid");

DataProvider代码:

代码语言:javascript
复制
'dataProvider'=>$model->searchbyID($base),

Model Search()代码:

代码语言:javascript
复制
public function searchbyID($id)
    {
        // @todo Please modify the following code to remove attributes that should not be searched.
        echo 'SEARCH ID===>'.$id;
        $criteria=new CDbCriteria;

        $criteria->compare('crm_field_id',$this->crm_field_id);
        $criteria->compare('name',$this->name,true);
        $criteria->compare('display_rules',$this->display_rules,true);
        $criteria->compare('edit_rules',$this->edit_rules,true);
        $criteria->compare('type',$this->type);
        $criteria->compare('is_deduplication_field',$this->is_deduplication_field);
        $criteria->compare('is_std_phone',$this->is_std_phone);
            $criteria->compare('crm_base_contact_id',$id);
        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }
EN

回答 1

Stack Overflow用户

发布于 2014-01-04 17:54:19

这会有点复杂,所以请仔细阅读,

您需要将单击的元素文本发送回dataProvider,然后使用该文本过滤出结果并再次生成网格:

我会让您根据该值进行选择,

让我们刷新网格并发回一些数据:

代码语言:javascript
复制
 $.fn.yiiGridView.update('some_grid', {
        data: 'name=tiny', // I'll assume you have selected the value and it's tiny
 });

但是在此之前,如何触发这个send方法呢?一种方法是,当您给出网格视图的列时,可以将其放在元素的onclick属性中

代码语言:javascript
复制
$this->widget('bootstrap.widgets.TbGridView', array(
        'id' => 'some_grid',
        'dataProvider' => $dataProvider,
        'columns' => array(
            array(
                'name' => 'name' , 
                'header' => Yii::t('model','name'), 
                'value' => 'CHtml::link($data["name"], "#", array("onclick" => "RefreshMyGrid(".$data["name"]."); return false;"))',
                'type' => 'raw',
            ),

然后你的函数就会变成这样:

代码语言:javascript
复制
function RefreshMyGrid(Word){
     $.fn.yiiGridView.update('some_grid', {
            data: 'name='+Word, // Word is what you are sending now
     });
}

然后,在填充该数据提供程序的任何位置(无论是在models、search() function或...中),获取该值并使用该值进行过滤。

希望这能有所帮助:D

更新:

searchbyID中获取传入的参数:

代码语言:javascript
复制
 // name here is the parameter that we sent from the grid
 $param = Yii::app()->request->getParam('name' , null);
 if(!empty($param))
 {
      // t is alias for your table, also make proper join here
      $criteria->join = 'INNER JOIN yourTable yt ON t.id = yt.id';
      // add a condition on joined table
      $criteria->addCondition('yt.id = "' . $param  . '"');
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20918593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档