Hey guyz
I am kind of stuck right now. I have many columns for a grid. I want to give user an option that he can See only columns that he selected to show on runtime via Ajax
I know we use "$.fn.yiiGridView.update" to update grid on runtime but how can i update Grid to show/hide certain columns only.
Page 1 of 1
How To Hide/show Columns In Cgridview Via Ajax
#2
Posted 20 February 2013 - 10:32 AM
* (i did not have time to put code together, leave it to yourself)
try this:
1) in your model, add
2) in your view (gridView), add visible property to each of your column
3) in between your view and model->search function, pass js version of this array when user select show and hide column before calling, in your search function reset $this->visible_flag before render 'admin' or 'list' page
** if you need persistence of the column selection, you may need using db or cookie trick, then each column's visible property read such value from db or cookie
try this:
1) in your model, add
public static $visible_flag;
2) in your view (gridView), add visible property to each of your column
'visible' => $model->visible_flag['field_name'],
3) in between your view and model->search function, pass js version of this array when user select show and hide column before calling, in your search function reset $this->visible_flag before render 'admin' or 'list' page
** if you need persistence of the column selection, you may need using db or cookie trick, then each column's visible property read such value from db or cookie
when i ask, if my question does not make sense, don't blame on me, coz i am new here to learn yii;
when i answer, if my answer does not make sense, don't blame on me, coz i am trying to answer to be answered;
ok, i'm covered to mess up and fooling around, yeehaw ...
when i answer, if my answer does not make sense, don't blame on me, coz i am trying to answer to be answered;
ok, i'm covered to mess up and fooling around, yeehaw ...
#3
Posted 20 February 2013 - 01:39 PM
Dear Friend
This is quet intresting. Following is one simple implementation.
I have got a model.User(id,name,age,sex,email,address).
CONTROLLER.
VIEW.
1.We are rendering a checkBoxList of attributes.By default I made all the checkboxes checked.
2.We are declaring columns inside the widget and merging with other columns.
3.We are registering a script to get the values from checkbox list and updating the grid with selected columns.
Here I made myself comfortable by calling attribute names as column.It becomes bit complex if you make a column
in an array format(name,value,type,etc).That also can easily be solved.
This is the screenshot from my localhost.
columns.png (20.95K)
Number of downloads: 19
Regards.
This is quet intresting. Following is one simple implementation.
I have got a model.User(id,name,age,sex,email,address).
CONTROLLER.
public function actionAdmin()
{
$model=new User('search');
$columns=array_keys($model->getAttributes());//we are getting in a array.array('id','name','age','sex','email','address'),
if(isset($_GET["Columns"]))
$columns=$_GET["Columns"];//If user chooses the column, column names changes accordingly.
$model->unsetAttributes(); // clear any default values
if(isset($_GET['User']))
$model->attributes=$_GET['User'];
$this->render('admin',array(
'model'=>$model,
'columns'=>$columns,
));
}
VIEW.
<?php
echo CHtml::checkBoxList('Columns',$columns,array_combine($columns,$columns),array('id'=>'columns','separator'=>''));
?>
</div>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array_merge($columns,array(array('class'=>'CButtonColumn'))),
)); ?>
<?php
Yii::app()->clientScript->registerScript('column','
$("input[name=\"Columns[]\"]").change(function()
{
var data=$("input[name=\"Columns[]\"]:checked").serialize();
$("#user-grid").yiiGridView("update",{data:data});
}
);
');
1.We are rendering a checkBoxList of attributes.By default I made all the checkboxes checked.
2.We are declaring columns inside the widget and merging with other columns.
3.We are registering a script to get the values from checkbox list and updating the grid with selected columns.
Here I made myself comfortable by calling attribute names as column.It becomes bit complex if you make a column
in an array format(name,value,type,etc).That also can easily be solved.
This is the screenshot from my localhost.
columns.png (20.95K)
Number of downloads: 19
Regards.
#4
Posted 20 February 2013 - 03:02 PM
You can also set a class for each of the HTML elements and do a hide/show on the class:
I set this in some column definitions for the CGridView:
I set this in some column definitions for the CGridView:
'headerHtmlOptions'=>array('class'=>'colclass',),
'footerHtmlOptions'=>array('class'=>'colclass',),
'filterHtmlOptions'=>array('class'=>'colclass',),
'htmlOptions'=>array('class'=>'colclass',),
#5
Posted 22 February 2013 - 04:28 AM
Thanks seenivasan And rootbear
I sorted that out with your suggestions
I sorted that out with your suggestions
Share this topic:
Page 1 of 1

Help














