Php 我们如何进行jQuery GridView日期范围搜索
下面是我的Gridview小部件代码。我想通过输入两个日期范围值来搜索这个jquery gridview。日期范围值是从日期选择器获取的Php 我们如何进行jQuery GridView日期范围搜索,php,jquery,yii,Php,Jquery,Yii,下面是我的Gridview小部件代码。我想通过输入两个日期范围值来搜索这个jquery gridview。日期范围值是从日期选择器获取的 <?php $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'printstatusforlocal-grid', 'dataProvider'=>$model->searchprogress(), 'filter'=>$model, 'columns'=&g
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'printstatusforlocal-grid',
'dataProvider'=>$model->searchprogress(),
'filter'=>$model,
'columns'=>array(
'order_id',
'albumname',
'orderdate',
'username',
array('header'=> 'Synchronized',
'name'=>'synchronize',
'value'=>'$data->Syncronize',
),
array(
'class'=>'CButtonColumn',
),
),
)); ?>
This is my gridview widget.I want to make a date range search through this?
My date picker chosing code is following..
<script src="<?php echo Yii::app()->baseUrl.'/js/jquery.easing.1.3.js';?>"></script> <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/jquery-ui-1.10.4.min" type="text/javascript"></script>
<script>
$(function() {
$( "#datepicker1, #datepicker2" ).datepicker({
dateFormat: "yy-mm-dd",
});
这是我的gridview小部件。我想通过它进行日期范围搜索?
我的日期选择器选择代码如下。。
jQueryUIDatePicker有一些api。所以我会使用以下方法:
在datepicker上选择我们重新路由到相同的控制器/操作,并附加date
GET参数:
<?php
$url= $this->createUrl($this->route());// to go to the same controller/action
...
?>
<script>
$("#datepicker1, #datepicker2").datepicker({
dateFormat: "yy-mm-dd",
// we append the current value to reroute
onSelect: function(dateText) {location.href = "<php echo $url;?>&date="+ this.value;},
});
</script>
现在需要将此方法修改为smth。像这样:
public function searchprogress($date=null)
{
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
...
if ($date)
$criteria->compare('date', $date); // compare models with this passed parameter
else
$criteria->compare('date', $this->date); // default comparison
// if you want some range comparison
if ($date) $criteria->addCondition('Begin >= "' . $date . '" ');
if ($date) $criteria->addCondition('End<= "' . $date . '" ');
...
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
public函数searchprogress($date=null)
{
$criteria=新的CDB标准;
$criteria->compare('id',$this->id);
...
如果($日期)
$criteria->compare('date',$date);//使用此传递的参数比较模型
其他的
$criteria->compare('date',$this->date);//默认比较
//如果你想要一些范围比较
如果($date)$criteria->addCondition('Begin>=“。$date.”);
如果($date)$criteria->addCondition('End如果我理解正确:
- 数据库表中的日期字段是
orderdate
- 您想搜索比较
orderdate
到fromdate
和todate
在这种情况下,必须将这两个属性添加到模型类中:
public $fromdate;
public $todate;
然后在模型规则中将它们声明为安全的(在所有场景中或仅在搜索中):
将这些属性添加到网格过滤器:
'columns' => array(
...
array(
'name' => 'orderdate',
'filter' => $this->widget( 'zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'fromdate',
), true ) . $this->widget( 'zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'todate',
), true ),
),
...
),
然后将compare
添加到searchprogress()
方法:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'printstatusforlocal-grid',
'dataProvider'=>$model->searchprogress($_GET['date']),
...
$criteria->compare('orderdate', $model->fromdate);
$criteria->compare('orderdate', $model->todate);
注意。DB表中的日期格式和属性值中的日期格式必须相同(例如Y-m-d)。如果将时间戳存储在DB中,则需要如下内容:
$criteria->compare('orderdate', strtotime($model->fromdate));
通过对我的示例代码进行一些小的改进,您可以轻松地实现按日期周期进行搜索。祝您好运!@Sujith K,我没有注意到begin和end的两个参数。但是您可以稍微修改代码,使其适用于两个日期选取器值。@Sujith K,传递两个日期选取器参数的另一种方法是将日期选取器i包装起来在表单上,将“提交”按钮添加到表单并重新路由到同一个conrtoller/action。
$criteria->compare('orderdate', $model->fromdate);
$criteria->compare('orderdate', $model->todate);
$criteria->compare('orderdate', strtotime($model->fromdate));