我们在使用包含extendedDataTable和一个或多个列表框的richfaces的seam应用程序中有一个页面。我们发现,一旦你在extendedDataTable中选择了一些然后切换到其中一个列表框,extendedDataTable就会一直响应向上和向下箭头键,所以如果你用它们来改变当前突出显示的列表框中的选择,extendedDataTable中的选择也会发生变化。
如果没有焦点,是否有一种解决方法可以阻止extendedDataTable更改选择?
不幸的是,代码相当复杂,但表格的xhtml是(为简单起见没有所有列):
<rich:extendedDataTable id="jobManJobListTable" enableContextMenu="false"
value="#{jobman_view.paginatedJobList}" var="job" rows="25" selectionMode="multi"
selection="#{jobman_view.jobListSelection}" height="">
<a4j:support event="onselectionchange" reRender="detailsDiv,customerDiv"
action="#{jobman_view.onJobSelectionChange()}"/>
<rich:column width="10%" sortable="true"
label="#messages['jobman.ui.joblist.table.column.heading.type']}">
<h:graphicImage value="../img/job_type_#{job.jobType.imageName}_16x16.png"/>
<rich:toolTip>
<span style="white-space: nowrap">
<strong>#{job.jobType.name}</strong>
</span>
</rich:toolTip>
</rich:column>
</rich:extendedDataTable>
请注意,该表不包含在a4j:support Rerender中列出的任何div中。
对于支持bean,paginatedJobList只是一个作业列表,onJobSelectionChange更改作业,支持bean认为是选中的,这样详细div在reRendered时包含正确的数据,而jobListSelection只是一个SimpleSelection的getter / setter
它似乎与a4j:support有关,没有它,当另一个控件有焦点时,选择不会改变。
答案 0 :(得分:0)
您可以编写智能JS函数并将其附加到onkeypress
extendedDataTable
属性
此功能可以在选择某些内容时禁用滚动,并在未选择任何内容时启用它。