在ATK4中重新加载网格

时间:2013-08-18 18:27:39

标签: atk4

我正在努力学习创建一个网站,让人们使用Agile Toolkit 4.2回答测验问题。

我有一个页面显示一个问题及其来自'sampleq'模型的答案选项。我想创建一个按钮,显示模型中的下一条记录。

我尝试了一些不同的方法来使js() - > reload()命令正常工作,但我无法做到。我收到AJAX“意外标识符”错误。我已经浏览了本网站上的相关问题,并在ATK网站上查找了文档,但我没有找到适合我的示例。

有人能告诉我如何让按钮正确重新加载网格吗?

function init(){
    parent::init();
    $page=$this;
}

function page_qlisting() {

    $qid=$this->recall('value',1);
    echo $qid;
    $NextB=$this->add('Button')->SetLabel('Next Question '.$qid);

    $grid=$this->add('Grid');
    $grid->setModel('sampleq',array('question','A1','A2','A3'));
    $grid->dq->where('id=',$qid);

        if($NextB->isClicked()){
            //$this->memorize('value',$qid+1);
            $grid->js()->reload();
        }               
  }

function page_qentry() {

$this->api->auth->check();
$this->add('Html')->set('Welcome to the question entry page.<br>');
$this->add('CRUD')->setModel('sampleq');
}

}

编辑: 在阅读了罗马人的回答后,我首先尝试了这个:

$qid=$this->recall('value',1);
    $grid=$this->add('Grid');
            $grid->setModel('sampleq',array('id','question','A1','A2','A3'));
            $grid->dq->where('id=',$qid);
            $this->add('Button')->SetLabel('Next Question')->js('click', $this->memorize('value',$qid+1))->js('click', $grid->js()->reload());

实际上有效 - 它一次只显示一条记录,当我点击按钮时它会显示下一条记录。接下来我尝试添加“上一页”按钮,如下所示:

$qid=$this->recall('value',1);
        $grid=$this->add('Grid');
        $grid->setModel('sampleq',array('id','question','A1','A2','A3'));
        $grid->dq->where('id=',$qid);
        $this->add('Button')->SetLabel('Previous Question')->js('click', $this->memorize('value',$qid-1))->js('click', $grid->js()->reload());
        $this->add('Button')->SetLabel('Next Question    ')->js('click', $this->memorize('value',$qid+1))->js('click', $grid->js()->reload());

但这不起作用。两个按钮都在递减。我尝试像你adjuster buttons example here那样铺设它。这是我的增量按钮代码在该尝试中的样子:

$incr=$this->add('Button')->SetLabel('Next Question');
        if($incr->isClicked()){
           $this->memorize('value',$qid+1);
           $grid->js()->reload();
           }

在这种情况下,当我点击按钮时,我收到“AJAXec响应错误:SyntaxError:意外的标识符”。

您能否就如何使用网格(或粗糙)进行增量和减量提供任何建议?当您尝试刷新网格而不是刷新按钮时,为什么调整器示例不起作用?感谢您之前的回答,并提前感谢您可能有时间提供的任何其他指导。

1 个答案:

答案 0 :(得分:1)

应该是这样:

$this->add('Button')->js('click', $grid->js()->reload());

如果您使用CRUD,则可能需要重新加载CRUD。