Как получить вид сетки на основе радиокнопок
Я использую две радиокнопки в расширенной форме поиска, они просматриваются и не рассматриваются. Когда я нажимаю на просмотренный, он должен отфильтровать несколько окон поиска в Gridview и показать результат. Также есть три других поля: "Дата обновления", "Дата проверки" и "Дата создания". Предположим, я нажимаю на проверенную кнопку. Следует проверить, что время обновления условия больше, чем дата создания, а проверенная дата является значением по умолчанию (0000-00-00 00:00:00) и отображать результаты в виде сетки.
SQL query-Select * from test where (updateddate>createddate)and(revieweddate=='0000-00-00 00:00:00');
Точно так же, когда я нажимаю "Не проверено", он должен проверить наличие обновленных дат = созданного даты и проверенного даты =NULL.
SQL query-Select * from test where (updateddate=createddate)and(revieweddate IS NULL);
Ниже приведен код, который я пробовал, но я не получаю правильных результатов. Как я могу выполнить правильные результаты.
$criteria->compare('ReviewedDate',$this->ReviewedDate,true);
if($this->ReviewedDate != '') {
$criteria->addCondition(
'ReviewedDate ' . ($this->ReviewedDate=='1' ? 'IS NOT NULL' : 'IS NULL'));
}
else {
$criteria->addCondition('ReviewedDate IS NULL');
}
1 ответ
Вы можете использовать фильтр клиента в виде сетки, например, раскрывающийся список, получить значение этих полей и реализовать свою логику, например:
по вашему мнению:
$this->widget('zii.grid.GridView' , array(
'id' => 'urGrid',
'dataProvider' => $model->search,
'columns' => array(
array(
'name' => 'ReviewedDate',
'filter' => CHtml::dropDownList('customeField' , $_GET['customeField'] , array(0=>'not reviewed' , 1=>'reviewed' , 2=>'some other thing'))
),
.
.
.
),
));
и в вашей функции saerch поймайте это значение полей обычного:
public function search() {
$criteria = new CDbCriteria;
//$criteria->compare('col1', $this->col1);
$criteria->compare('col2', $this->col2);
.
.
.
if(isset($_GET['customeField'])){ // implement your logic in here
if($_GET['customeField'] == 1){
$criteria->addCondition('t.updateddate > t.createddate); //add your logic
$criteria->compare('revieweddate' ,'0000-00-00 00:00:00'); //check for exact thing
}
else{ anothe thing ..}
}
ура