在treeTable滚动上重置Oracle-adf selectOneChoice

时间:2013-12-10 21:47:31

标签: java oracle11g oracle-adf jdeveloper

我在clickToEdit模式下遇到TreeTable中的selectOneChoice问题。 向下滚动并返回时,将清除聚焦行的组合值。 要复制该问题,只需导航到ADF演示: clickToEditTreeTable

  1. 展开全部
  2. 选择第一行
  3. 将Col2的值更改为HeadPhone
  4. 焦点仍然在第一行,向下滚动直到出现“获取数据”消息
  5. 向上滚动到第一行
  6. Col2的值更改为Mouse
  7. 我该如何避免这种情况? 在我的应用程序中,我注意到值更改侦听器在更改值时第一次触发,第二次在滚动treeTable时将其设置为null

    仅在editTode clickToEdit中使用treeTable时会出现此问题。 标准表工作正常。

    我的jdev是11.1.2.1.0。

    提前谢谢。

3 个答案:

答案 0 :(得分:0)

由于您可以在ADF演示本身中重现此问题,因此它可能是ADF错误或限制。

答案 1 :(得分:0)

我认为那是一种错误。您可以尝试在上面提交服务请求 似乎因为你没有提交你的更改(因为你仍然停留在这一行)。在另一次获取时,您的更改未被保存,并且在重新获取时您将获得旧值 至于这个问题的解决方法:

  1. 如果您的树不是太大,您可以将迭代器 RangeSize 设置为 -1 以一次获取所有行以避免更多行提取。但是,如果你有很多行,你就会遇到性能问题。
  2. 您可以尝试在此字段上将自动提交属性设置为 true ,这样它就可以在comback上保存您的数据(并希望加载)(即使它没有,你可以在你的bean中做到)。可能是当你的控件失去焦点时,你还需要把 clientListener 放在那里提交数据。
  3. 不要将clickToEdit用于此控件或将其称为功能(无提交 - 无更改):)

答案 2 :(得分:0)

由于我不能等待修复,我找到了解决问题的方法。 当元素在向后滚动时第二次重新定义时,该值被设置为null(或复选框为false),因为调用了bean的setter属性和(如果存在)selectOneChoice的值更改。 所以我在valueChange事件上设置了一个clientListener,它与valueChangeListener不同,并且伪值属性为值。