Agile Toolkit操纵Grid列内容

时间:2013-02-05 09:13:51

标签: atk4 agiletoolkit

刚开始使用ATK4并非常欣赏它,但不知道如何做到这一点......

我想要完成的任务:

我将查询的结果输出到网格,其中一个字段是'status',数据将是'-1'或'1'。 我不是输出-1或1到列,而是如何输出HTML片段(或我需要的任何东西来获得我想要的东西),而不是为每个值显示不同的图标? 简而言之:

在列'状态'中:

  • 如果值为-1,则显示iconDown.gif;
  • 如果值为1,则显示iconUp.gif
到目前为止

代码:

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

    $q=$this->api->db->dsql();
    $q->table('remote_system')
            ->join('customers.id','customer_id')
            ->field('customer_id')
            ->field('ip')
            ->field('nickname')
            ->field('name','customers')
            ->field('status')
    ;

    $grid = $this->add('Grid');

    $grid->addColumn('text','status')->makeSortable();
    $grid->addColumn('text','name')->makeSortable();
    $grid->addColumn('text','ip');
    $grid->addColumn('text','nickname');
    $grid->addButton('Reload Grid')->js('click',$grid->js()->reload());
    $grid->addQuickSearch(array('name'));
    $grid->setSource( $q );
    }

}

任何指针/提示?

1 个答案:

答案 0 :(得分:1)

要在网格中添加带图标的列,您可以使用自定义模板。

在我的一个项目中,我喜欢这样:

$url = $this->api->pm->base_url . $this->api->locateURL('template', 'images/');
$grid->addColumn('template', 'type', false)
    ->setTemplate('<img src="' . $url . 'icon_object_<?$type?>.png">');

它将使用名为type的模型字段(在您的情况下使用status)并在该列中显示图标。图标来源网址是动态生成的,它会在template/images目录中搜索名为 icon_object_XXX.png 的图像文件,其中 XXX 值将从字段{{ 1}}值。

在我的情况下type是这样的:type等。

还有一件事 - 你应该尽可能地开始使用模型!这样,当您的项目变得更大时,您将会放松生活。也可以使用它们获得额外的安全性(条件等)。