Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpages 按钮的onclick事件需要双击_Xpages - Fatal编程技术网

Xpages 按钮的onclick事件需要双击

Xpages 按钮的onclick事件需要双击,xpages,Xpages,我有一个使用DB2作为数据源的viewPanel。我创建了一个包含所有可能的viewPanel列的组合框,一个选择ASC或DESC的radioGroup,一个包含所有可能的viewPanel列的组合框,以及一个onchange事件,用于部分更新另一个组合框中的值,最后一个comboBox,它根据前面的comboBox值包含来自DB2的所有值,该comboBox值包含一个onchange事件以部分更新viewPanel 我的按钮的onclick事件包含以下代码,并对viewPanel进行部分更新:

我有一个使用DB2作为数据源的viewPanel。我创建了一个包含所有可能的viewPanel列的组合框,一个选择ASC或DESC的radioGroup,一个包含所有可能的viewPanel列的组合框,以及一个onchange事件,用于部分更新另一个组合框中的值,最后一个comboBox,它根据前面的comboBox值包含来自DB2的所有值,该comboBox值包含一个onchange事件以部分更新viewPanel

我的按钮的onclick事件包含以下代码,并对viewPanel进行部分更新:

var sort:String = getComponent('comboBox1').getValue();
var order:String = getComponent('radioGroup1').getValue();
var vp = getComponent('panel_container').getData()[0];
vp.setDefaultOrderBy(sort + " " + order)
问题是我必须点击两次按钮才能让代码真正运行。第一次单击确保触发onchange事件,然后第二次单击激活代码。我尝试使用完全更新,并用部分更新检查“设置部分执行模式”


如何让我的按钮在第一次单击时使用onclick事件?

太多事件探戈:-下面是我要做的:

将组合框绑定到viewScope变量。这比getValue更健壮,并且允许在以后进行一些d&d更改UI 使用组合框客户端,而不是服务器端onChange事件。这将需要所有的值被发送下来,例如通过Ajax 单击按钮时,确保字段位于刷新的面板内
希望这有帮助

您是否尝试在onClick中将代码合并在一起?项目符号1和3没有问题。因此,在客户端使用Ajax调用SQL语句,从DB2表中获取第二个comboBox的数据?取决于数据量。假设第一框中有50个选项,第二框中各有50个选项,那么就有2500个值。将它们设置为30个字符长,这样可以提供75k的数据—实际上并不多。我会一次把它们全部传送出去,然后做一个完整的本地选择。如果它们在会话中没有更改,您甚至可以将它们保存在HTML本地存储中。我试图在我的onchange事件中使用客户端代码调用SSJS函数,将有效值放入viewScope并刷新从该viewScope获取其值的组合框,但它不起作用。onchange代码:{javascript:getFilterByValue'comboBox2'};XSP.partialRefreshGet{id:comboBox3},请参阅附加注释中的SSJS代码getFilterByValues SSJS var getFilterByValues=函数comboID:string{var itemList:java.util.Vector=new java.util.Vector;var filter=getComponentcomboID.getValue;dBar.infoLibrary:+filter;尝试{iffilter==Select Column | filter==null{itemList.addSelect值;viewScope.put'filterby',itemList;dBar.infoNo filter selected;}否则{itemList.addSelect值;itemList。add@JdbcDbColumndb2,TECH.TBSCRA_DEMO,filter,,filter;viewScope.put'filterby',@UniqueitemList;}}catch e{dBar.infoe.toString;}}}我注意到{javascript:getFilterByValues'comboBox2'};在我更改相应的comboBox值之前,该行正在运行