我使用SQLFORM创建了一个表单,并在视图中插入了一个LOAD组件,该组件包含另一个SQLFORM,它通过填写和提交表单来显示正在填充的表的内容。
看起来像是:
- 形式字段1
- 形式领域2
....
-component
- 形式按钮1
这很有效,但是,当组件显示的条目数超过20时,将创建一个新页面,并且箭头似乎在页面之间导航。
问题是,如果我使用箭头转到下一页,我将被重定向到包含组件的SQLFORM的另一个网页。
在停留在表单上时,有没有办法在页面之间导航?
我可以尝试通过将 paginate 值设置为高于20的值来规避问题,但在某些时候它仍然会有问题。
代码的合成版本:
查看:
{{response.files.append('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js')}}
{{extend 'layout.html'}}
{{=form.custom.begin}}
{{=LOAD('default','intermediate.load', ajax=True, target="intermediate")}}
{{=form.custom.submit}}
{{=form.custom.end}}
<script type="text/javascript">
$(document).ready(function(){
$('#field_1').change( function(){
ajax('reload_intermediate', ['field_1'], ':eval');
});
});
</script>
控制器:
def form_1():
form = SQLFORM.factory(Field('field_1'),
Field('field_2'),
buttons = [INPUT(_type='button',_id='btn_add',_value ='Do')])
return dict(form=form)
def reload_intermediate():
value = request.vars.field_1
return '''$("#intermediate").load('intermediate.load?value={}');'''.format(value)
组件:
{{ form_results_grid = SQLFORM.grid(db(db.Table_1.id == request.vars.value),create=False,searchable=False, details=False, deletable=False, editable=False, csv=False, user_signature=False, maxtextlength=100)
}}
{{=form_results_grid}}
此处称为 intermediate 的组件运行良好,但不允许在页面之间导航而不会重定向到组件本身,从而使页面保留表单。