我正在努力学习创建一个网站,让人们使用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:意外的标识符”。
您能否就如何使用网格(或粗糙)进行增量和减量提供任何建议?当您尝试刷新网格而不是刷新按钮时,为什么调整器示例不起作用?感谢您之前的回答,并提前感谢您可能有时间提供的任何其他指导。
答案 0 :(得分:1)
应该是这样:
$this->add('Button')->js('click', $grid->js()->reload());
如果您使用CRUD,则可能需要重新加载CRUD。