单击网格按钮时显示列表? (在敏捷工具包中)

时间:2012-10-19 11:21:25

标签: php frameworks agile atk4 agiletoolkit

我有一个网格,其中一个列中有按钮,如下所示: 如何在单击按钮时显示列表或新网格?

   $grid=$page->add('Grid');
        $grid->setModel('Tickets',array('subject','date','time','department','status','text'));
        $grid->addColumn("button",'read_ticket_id','Read');

        if($_GET['read_ticket_id']){
            // this generates javascript to be executed on buttion click
       //how can I show a lister or a new grid when the button clicked?
        }

2 个答案:

答案 0 :(得分:1)

查看ATK4键盘中的示例。 http://agiletoolkit.org/codepad/gui/grid

编辑: 这是我的一个页面的片段。也许你会发现它很有用。 这背后的想法是你实际上在这个IF语句中生成JavaScript然后JavaScript被发送回你的浏览器,然后可以再次请求某些东西(重新加载现有对象,创建新的,重定向到某个地方等)。

...
if($_GET['ticket']){
    // Join this report with selected ticket
    $this->grid->model->addToTicket($_GET['ticket']);
    // Reload
    $this->js(null,array(
        $x->js()->reload(),
        $this->js()->univ()->successMessage('Successfully saved')
    ))->execute();
}
...

使用$ _GET ['ticket'],您可以在网格中获得记录的ID,其中您单击了“添加到故障单”按钮。 $ x是此页面中的其他对象,例如,某些表单,字段,制表符或其他网格。使用$ this-> grid->模型,您可以参考与此网格关联的模型,在该模型中,我定义了自定义操作/方法 - addToTicket,它可以对数据库执行某些操作。

你也可以使用$ this-> js() - > redirect()或$ this-> js() - > location()等重定向到其他页面。基本上你可以做任何你想做的事情,但所有这些都需要生成JavaScript作为结果或说明您的浏览器下一步做什么。

不要忘记在最后添加 - > execute()!这将停止进一步解析您的页面,并立即生成JS响应。

答案 1 :(得分:1)

我找到了一个很好的例子:

http://agiletoolkit.org/doc/grid/interaction

==========

$g=$p->add('Grid');
$g->setSource('user');
$g->addColumn('name');
$g->addColumn('surname');
$g->addColumn('button','info','More Info');
$g->dq->where('name is not null')->limit(5);

if($_GET['info']){
    $g->js()->univ()->dialogURL('More info',
            $this->api->getDestinationURL(
                null,array(
                    'more_info'=>$_GET['info'],
                    'cut_object'=>'myform'
                    )))
        ->execute();
}

if($_GET['more_info']){
    $f=$this->add('Form','myform');
    $f->addField('readonly','name');
    $f->addField('readonly','surname');
    $f->setSource('user');
    $f->setConditionFromGET('id','more_info');
}