我正在努力学习足够的知识来创建一个网站,让人们使用 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());
但是,这不起作用。两个按钮都在递减。我试着把它像你的调节器按钮示例一样布置在这里。这是我的增量按钮代码在该尝试中的样子:
$incr=$this->add('Button')->SetLabel('Next Question');
if($incr->isClicked()){
$this->memorize('value',$qid+1);
$grid->js()->reload();
}
在这种情况下,当我单击按钮时,我会收到“AJAXec 响应中的错误:SyntaxError: Unexpected identifier”。
您能否就如何使用网格(或 crud)进行增量和减量提供任何建议?当您尝试刷新网格而不是刷新按钮时,为什么调整器示例不起作用?感谢您之前的回答,并提前感谢您可能有时间提供的任何其他指导。