【问题标题】:how do I get the DatePicker value date to use in js()如何获取 DatePicker 值日期以在 js() 中使用
【发布时间】:2012-03-03 19:46:33
【问题描述】:

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

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())));


}
}

【问题讨论】:

    标签: php javascript filter grid atk4


    【解决方案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);
    

    您也可以将字段合并到 reload() 中,但您应该从 $_GET 变量中读取 $d1 和 $d2。

    如果您无法从字段中获取值,请尝试更简单的方法:

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

    然后观察 Inspector's Console 的输出。

    【讨论】:

    • 谢谢,这些记忆和回忆方法现在将非常有用(我正在转发 $_GET...),再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多