常常有这样的情况出现,下拉框里面的值是前面一个步骤产生的数据,所以下拉框的数据是随时变化的,那么你要是不刷新页面的话,下拉框里面的值就不会变。而每次都要去刷新一下页面,这个操作是非常不友好的!
今天就介绍一种不用刷新页面就可以刷新下拉框的值的方法,此方法脱胎于下拉框联动。
首先在你正式用的下拉框那里加上编辑前事件 ,然后再隐藏掉作为中间人的那个单元格E3。
- var k=contentPane.curLGP.getCellValue("E3");
- var m=k+1;
- contentPane.setCellValue("E3",null,m);
复制代码
意义很简单,每次编辑前,得到E3的值,然后加1再传给E3。并且一定要给E3加上下拉框和初始值1!
然后在你的sql语句里面拼一句肯定是成功的语句例如这种:select id from b where rownum<${E3}+50 。这是oracle 的写法,简单来说就是要带这个E3参与一下sql,但是不影响sql的结果。注意这里的50,要根据你的实际情况来修改,比如你数据量大概是1000条,那么就改为1000,。上面是第一种写法,经过和女神@cherishdqy 的讨论,女神提出了select id from b where 0!=${E3}这种写法,这样就不用管行号,成了一个通用的例子了,大佬出手就是厉害!另外提一点,这个条件最好是第一个条件,这样执行效率最高(oracle是这样)。不管是填报页面还是参数面板这种方法都适用,语句稍微有点不同。
- var k=this.options.form.getWidgetByName("M").getValue();
- var m=k+1;
- this.options.form.getWidgetByName("M").setValue(m);
复制代码
这样就实现了,不用刷新这个页面下拉框的值也可以刷新。
还有一点,现实中一般都习惯enter来左右切换选中控件(帆软是tab),然后enter来确定下拉框的选中项(帆软是tab)。估计帆软是考虑冲突的原因才选择tab,但是这种有点不方便,没有遵从用户的操作习惯。下面的js加到加载起始可以将tab换成enter,目前没有发现什么冲突的地方,除了和FR内置的查询按钮快捷键冲突,不过这个js一般是为了填报顺畅,大家自己取舍一下,也可以自定义查询按钮和他的快捷键。这样才满足操作员的操作习惯
- FR.ComboBoxEditor.prototype._onKeyDown = function (c) {
- var b = c.data;
- switch (c.keyCode) {
- case FR.keyCode.DOWN:
- if (!b.isExpanded()) {
- b.onTriggerClick()
- } else {
- if (b.focusIndex == undefined) {
- b.focusIndex = b._getSelectedIndex() || 0
- }
- if (b.focusIndex < (b.considerAllowBlankLength() - 1)) {
- b._setItemFocus(b.focusIndex + 1, b.focusIndex);
- b.focusIndex = b.focusIndex + 1
- } else {
- b._setItemFocus(0, b.focusIndex);
- b.focusIndex = 0
- }
- }
- c.stopEvent();
- break;
- case FR.keyCode.UP:
- if (b.isExpanded()) {
- if (b.focusIndex == undefined) {
- b.focusIndex = b._getSelectedIndex()
- }
- if (b.focusIndex - 1 >= 0) {
- b._setItemFocus(b.focusIndex - 1, b.focusIndex);
- b.focusIndex = b.focusIndex - 1
- } else {
- b._setItemFocus(b.considerAllowBlankLength() - 1, b.focusIndex);
- b.focusIndex = b.considerAllowBlankLength() - 1
- }
- c.stopEvent()
- }
- break;
- case FR.keyCode.TAB:
- b.collapse();
- break;
- case FR.keyCode.ENTER:
- if (b.isExpanded()) {
- if (b.focusIndex != undefined) {
- b._setSelectedIndex(b.focusIndex)
- } else {
- b.collapse();
- b.editComp.blur();
- c.stopEvent();
- break
- }
- b._onEnterPressed();
- if (b.editComp.val() == "" && b.options.allowBlank !== false) {
- b.inList = true
- }
- c.stopEvent()
- }
- break
- }
- }
复制代码 模版我就不上了,免得赚大家的豆子,很简单的几个js大家一用就知道功效。
编辑于 2018-1-23 10:38
编辑于 2018-1-23 10:52
|