Update Cgridview Date Column - yii

I want to update CGridview Date column on clicking the CJuiDatePicker's Date.
CJuiDatePicker Code:
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'id'=>'date-picker-id',
'model' => Holidays::model(),
'attribute' => 'date',
'flat' => true,
'options'=>array(
'onSelect'=>'js: function(dateText) {
$("#schedules-grid").yiiGridView("update", {
data: "date="+dateText,
});
}'
),
)
); ?>
My grid code:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'schedules-grid',
'dataProvider'=>Holidays::model()->search(),
'columns'=>array(
'seq',
array(
'name' => 'name',
'value' =>'"holiday"',
'type' => 'raw',
),
'date',
array(
'name'=>'is_active',
'value' =>'"Y"',
),
),
)); ?>
Im getting seleted date in "dateText" variable how to update that value in the grid's Date Column ????

using this to update yiiGridView $.fn.yiiGridView.update("schedules-grid")
'onSelect'=>'js: function(dateText) {
$.fn.yiiGridView.update("schedules-grid",
{data: "date="+dateText,
});`

Related

Updating Cgridview with date selected from CJuiDatePicker

Im newbie to yii,I want to update the CGridview date column with the date selected from datepicker shown in image,
My View Coding:
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'name'=>'inline_datepicker',
'flat' => true, // tells the widget to show the calendar inline
)
); ?>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'editsource-grid',
'dataProvider'=> Holidays::model()->search(),
'columns'=>array(
'seq',
array(
'name'=>'name',
'value'=>'Holiday',
'type'=>'raw',
'htmlOptions'=>array('width'=>5),
),
'date',
array(
'name'=>'is_active',
'value'=>'Y',
'type'=>'raw',
'htmlOptions'=>array('width'=>5),
),
),
)); ?>
Can anyone help me out?
I would just suggest making a column in the GridView which has a date picker as a filter. The following code only contains what is needed for it to work:
<?php $this->widget('zii.widgets.grid.CGridView', [
'afterAjaxUpdate' => 'js:function(){jQUery("#Model_date").datepicker()}',
'columns' => [
[
'name' => 'date',
'value' => '$data->date',
'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', [
'model' => $model,
'attribute' => 'date',
], true),
],
],
]);

Yii Cgridview how to render in view 2 or more values from the same table in 1 column

I have a Cgridview that has multiple columns. I would like to merge and render the values of 3 columns in 1 column.
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'policy-grid',
'dataProvider'=>$dataProvider,
'filter'=>$dataProvider->model,
'selectableRows' => 1, // you can select only 1 row!!
'selectionChanged'=>'function(id){ var objectId = $.fn.yiiGridView.getSelection(id);
if (isNaN(objectId) || objectId == ""){return;} location.href =
"'.$this->createUrl('policy/view').'&id="+$.fn.yiiGridView.getSelection(id);}',
'htmlOptions'=>array('class'=>'grid-view grid_pointer',),
'columns'=>array(
array(
'name' => 'compliance',
'type' => 'html',
'value' => '$data->status == "ACTIVE" ? (CHtml::image($data->compliance ==
"SUFFICIENT" ? "images/policy_sufficient.png" : "images/policy_insufficient.png"))
: "N/A" ',
'filter' => VFFormUtil::getFilter(VFFormUtil::POLICY_COMPLIANCE),
'htmlOptions' => array('style'=>'text-align: center'),
),
array(
'name' => 'status',
'filter' => VFFormUtil::getFilter(VFFormUtil::ACTIVE_INACTIVE),
'htmlOptions' => array('style'=>'text-align: center'),
),
array(
'name' => 'coverage_left',
'htmlOptions' => array('style'=>'text-align: center'),
),
array(
'name' => 'model_year',
'htmlOptions' => array('style'=>'text-align: center'),
),
'make',
'model',
How would I combine 'model_year','make' and 'model', into 1 column in the views?
The correct way would be to create a new property variable in the model, and join the values afterFind().
See How to have multiple fields (D/M/Y) for single date property in Yii?, but you have to swap the find and save functions, as that user wants to do the opposite (split single column into three fields instead).
You can create a getter in the model:
public function getModelLabel()
{
return $this->model_year.' '.$this->make.' '.$this->model;
}
Then you can use modelLabel in your GridView as if it were a real attribute.

How to add radio into cgridview

I want to add single radio button to gridview row by row at yii. I googling like this "yii single radio button into cgridview" but I can't get what I want.
This is my gridview
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'acc-recei-grid',
'dataProvider'=>$model->search_implementerlist(),
'filter'=>$model,
'columns'=>array(
array(
'class' => 'CCheckBoxColumn',
'selectableRows' => 2,
'checkBoxHtmlOptions' => array(
'name' => 'implementers[]',
),
'value'=>'$data->id',
'checked'=>function($data, $row) use ($current_implementers){
return in_array($data->id, $current_implementers);
}
),
array(
'name'=>'lead_implementer',
'type'=>'raw',
'value' => 'CHtml::radioButtonList("lead_implementer","'. $lead_implementer .'",array($data->id), array("template" => "{input}", "style" => "width:20px!important", "separator"=>" "))',
),
'username',
),
)); ?>
How can I do?
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'acc-recei-grid',
'dataProvider'=>$model->search_implementerlist(),
'filter'=>$model,
'columns'=>array(
array(
'class' => 'CCheckBoxColumn',
'selectableRows' => 2,
'checkBoxHtmlOptions' => array(
'name' => 'implementers[]',
),
'value'=>'$data->id',
'checked'=>function($data, $row) use ($current_implementers){
return in_array($data->id, $current_implementers);
}
),
array(
'name'=>'lead_implementer',
'type'=>'raw',
'value' => 'CHtml::radioButtonList("lead_implementer","'. $lead_implementer .'",array("$data->id"=>"$data->id"), array("template" => "{input}", "style" => "width:20px!important", "separator"=>" "))',
),
'username',
),
)); ?>

How to add custom column in CGridView in YII?

I need to add a column in CGridView.
I use this:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'pager' => array(
'firstPageLabel' => '<<',
),
'columns'=>array(
'username',
'name',
'email',
'creationDate',
array(
'class' => 'CButtonColumn',
'template' => '{change} {view}',
'buttons' => array(
'change' => array(
'url'=> "'http://test.com/userservice/".$model->username."'",
),
),
),
array(
'name' => 'test',
'value' => 'testtest',
)
),
));
But I got error:
Property "User.test" is not defined.
You're almost there, in your column array you would use the name param for attributes of the model in the dataprovider, instead for custom columns you can use header like so:
'columns'=>array(
...
array(
'header' => 'test',
'value' => '"testtest"',
),
...
)
You can write normal code on CGridView like this .
'columns'=>array(
'username',
'name',
'email',
'creationDate',
'test',
---
),
If you put code like this on your respective model .
---
public $test ;
public function afterFind() {
$this->test = 'Test Variable' ; // put your custom code to reflect exact need
return parent::afterFind();
}
---

CGridView filter dropdown from array

I have table of providers (id, title, onoff) where onoff column is a status: 1 = on, 0 = off
I dont have table in DB for these statuses, so I don't have model for statuses.
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'provider-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'id',
'htmlOptions'=>array('width'=>'40px'),
),
'title',
array(
'name'=>'onoff',
'filter'=>CHtml::dropDownList('Provider[onoff]', '',
array(
''=>'All',
'1'=>'On',
'0'=>'Off',
)
),
),
array(
'class'=>'CButtonColumn',
'template'=>'{update}{delete}'
),
),
It filters data, but after ajax forget the state of dropdown
What is the best way to build dropdown in this case?
And what is the best way to substitute 1 to On and 0 to Off in datagrid cells?
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'provider-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'id',
'htmlOptions'=>array('width'=>'40px'),
),
'title',
array(
'name'=>'onoff',
'value'=>'Crud::getOnoff($data->onoff)',
'filter'=>CHtml::listData(Crud::getOnoffs(), 'id', 'title'),,
),
array(
'class'=>'CButtonColumn',
'template'=>'{update}{delete}'
),
),
In model
public function getOnoffs()
{
return array(
array('id'=>'1', 'title'=>'On'),
array('id'=>'0', 'title'=>'Off'),
);
}
public function getOnoff($onoff)
{
if($onoff == 1)
return 'On';
else
return 'Off';
}
array( 'name' => 'language',
'value' => '$data->language',
'filter' => CHtml::listData( Vediodesc::model()->findall(), 'language', 'language'),
),