2012-02-11 129 views
1

我想控制两个日期选择器上的日期的网格, 虽然重新加载网格可能会更好,但我正在重新加载整个页面。 无论如何,我无法得到日期选择器的值,以便在重新加载数组中使用它,我应该怎么做?我有这个:我如何获取DatePicker值日期在js中使用()

class page_caja extends Page { 
function init(){ 
    parent::init(); 

    if(!$_GET['fInicial']){ 
     $fInicial=date('d/m/Y'); 
    }else{ 
     $fInicial=$_GET['fInicial']; 
    } 
    if(!$_GET['fFinal']){ 
     $fFinal=date('d/m/Y');  
    }else{ 
     $fFinal=$_GET['fFinal']; 
    } 
    $f=$this->add('Form'); 

    $inicial=$f->addField('DatePicker','fInicial','Fecha Incial')->set($fInicial); 
    $final=$f->addField('DatePicker','fFinal','Fecha Final')->set($fFinal); 

    //Tabla de Pagos Pendientes 
    $this->add('H3')->set('Movimientos'); 
    $g=$this->add('MVCGrid'); 
    $g->setModel('Caja');     
    $g->removeColumn('programaPago'); 
    $g->addColumn('date','created_dts','Fecha'); 
    $g->dq->where("DATE(created_dts)>=",$inicial->get()); 
    $g->dq->where("DATE(created_dts)<=",$final->get()); 
    $g->addTotals(); 


    $inicial->js('change',$this->js()->reload(array('fInicial'=>$inicial->js()->value(),'fFinal'=>$final->js()->value()))); 
    $final->js('change',$this->js()->reload(array('fInicial'=>$inicial->js()->value(),'fFinal'=>$final->js()->value()))); 


} 
} 

回答

1

你的方法很好,我没有看到任何错误,但我会写这样的。我的方法是使用过滤器提交并需要一个额外的重装,但它的工作原理相当顺利和简单的理解:

$filter = $page->add('Form'); 
$grid = $page->add('Grid')->setModel('Caja'); 

$filter->addField('date','d1')->js('change',$filter->js()->submit()); 
$filter->addField('date','d2')->js('change',$filter->js()->submit()); 

if($filter->isSubmited()){z 
    $this->memorize('d1',$filter->get('d1')); 
    $this->memorize('d2',$filter->get('d2')); 
    $grid->js()->reload()->execute(); 
} 

$d1=$this->recall('d1',null); 
if($d1)$grid->dq->where('date(created_dts)>=',$d1); 

$d1=$this->recall('d2',null); 
if($d2)$grid->dq->where('date(created_dts)<=',$d2); 

您也可以将字段插入重载(),但是你应该阅读$ d1和$ D2从$ _GET变量。

如果你不能从现场获得价值,尝试简单的方法:

$form->addField('test')->js('change') 
    ->univ()->log(
     $form->getElement('test')->js()->val() 
    ); 

然后看督察的控制台输出。

+0

谢谢,那些记忆和回忆方法现在将非常有用(我正在继续在$ _GET ...上),再次感谢! – mcanedo 2012-02-13 20:21:46

相关问题