1

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

   $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?
        }
4

2 回答 2

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->model 您可以获得与此网格关联的模型的引用,并且在该模型中我定义了自定义操作/方法 - addToTicket 对数据库执行某些操作。

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

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

于 2012-10-19T21:01:11.827 回答
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');
}
于 2012-10-21T10:47:48.003 回答