我正在使用Yii框架。
我使用以下命令在我的一个cgridview过滤器字段中设置了一个值:
这是我的jQuery为搜索字段分配值:
$('#gridviewid').find('input[type=text],textarea,select').filter(':visible:first').val('".$_GET['value']."');
这里我的PHP用于调用cgridview:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'bills-grid',
'dataProvider'=>$dataProvider,
'filter'=>$model,
'cssFile'=>Yii::app()->baseUrl . '/css/gridview.css',
'pager'=>array(
'class'=>'AjaxList',
'maxButtonCount'=>25,
'header'=>''
),
'columns' => $dialog->columns(),
'template'=>"<div class=\"tools\">".$dialog->link()." ".CHtml::link($xcel.' Export to excel', array('ExcelAll'))."</div><br />{items}{summary}<div class=\"pager-fix\">{pager}</div>",));
该值显示在搜索字段中,我的cgridview正常工作,没有任何问题,但我无法触发cgridview刷新或过滤。有没有人知道在页面加载后使用预定义的值来触发cgridview过滤的人?
如果您需要其他信息,我们将非常感谢您的帮助。
谢谢。
答案 0 :(得分:9)
您可以在不修改客户端代码的情况下解决问题。在您的控制器操作中,只需设置属性的默认值,如下所示
public function actionAdmin()
{
$model = new Bills();
$model->unsetAttributes();
$model->attribute_name="default filter value";//where attribute_name is the attribute for which you want the default value in the filter search field
if(isset($_GET['Bills'])){
$model->attributes = $_GET['Bills'];
}
$this->render('admin',array('model'=>$model));
}
答案 1 :(得分:1)
查看gii生成的'默认'索引操作:
public function actionIndex()
{
$model = new Bills();
$model->unsetAttributes();
if(isset($_GET['Bills'])){
$model->attributes = $_GET['Bills'];
}
$this->render('index',array('model'=>$model));
}
因此,如果您添加一行,例如:$model->attribute = 'test';
,那么您就完成了。 'attribute'当然是必须具有默认过滤器值的属性(在这种情况下,值是'test'):)。所以你的代码看起来像:
public function actionIndex()
{
$model = new Bills();
$model->unsetAttributes();
if(isset($_GET['Bills'])){
$model->attributes = $_GET['Bills'];
}
if(!isset($_GET['Bills']['attribute']) {
$model->attribute = 'test';
}
$this->render('index',array('model'=>$model));
}
当然,只要您不在其过滤器字段中键入任何内容,您的属性就会设置一个测试值(在过滤器中)。我希望那就是你要找的东西。您的过滤器应该一如既往。
抱歉我的英文不好:)
问候
答案 2 :(得分:0)
您可以使用Yii的更新:
$.fn.yiiGridView.update('bills-grid', {
type: 'GET',
url: <?php echo Yii::app()->createUrl('controller/action') ?>"?Class[attribute]=<?php echo $_GET['value'] ?>
success: function() {
$.fn.yiiGridView.update('bills-grid');
}
});
这就是我这样做的方法,只需更改URL,它应该是gridview的相同控制器动作,并将URL参数更改为其中所表示的结构,应该像 Bills [attribute] = value 强>