我得到了ap:dataTable其中包含
<p:dataTable id="dataTable" widgetVar="dataTableCar" var="category"
value="#{CategoryBean.categories}" selection="#{CategoryBean.selectedCategory}"
selectionMode="single" rowKey="#{category}"
<p:column headerText="name">
<h:outputText value="#{category.name}" />
</p:column>
<p:column headerText="parent">
<p:autoComplete id="parentCategory" completeMethod="#{CategoryBean.categories}" maxResults="20" value="#{category.parent}" var="p" itemLabel="#{p.name}"
itemValue="#{p}" converter="#{categoryStringConverter}"
forceSelection="true">
<p:ajax event="itemSelect"
listener="#{CategoryBean.oncategorySelect}" />
</p:autoComplete>
</p:column>
我需要强制选择行,以防用户单击自动完成功能。也许我应该提一下,如果用户单击进入p:column托管的ui控件(在此示例中为自动完成),则不会选择任何行。
有办法实现吗?如果没有得到所选行,则无法处理父类别。
您可以通过2种方式来做到这一点,都包括jQuery。
我将使用以下p:dataTable
代码展示这两种方式。
我使用h:inputText
而不是p:autoComplete
。
<p:dataTable value="#{userManagedBean.userList}" var="user"
selection="#{userManagedBean.selectedUser}" selectionMode="single"
rowKey="#{user.email}" widgetVar="dataTableWidget">
<p:ajax event="rowSelect"/>
<p:column headerText="Email">
#{user.email}
</p:column>
<p:column headerText="Name">
<h:inputText value="#{user.name}" onclick="myFunction(this);"/>
</p:column>
</p:dataTable>
第一种方式:
当用户单击“自动完成”时,在其父级(在本例中为)上模拟click事件<td>
,从而依次选择其父级<tr>
,最后将选择“行”。
<script type="text/javascript">
function myFunction(ele){
var tdEle = $(ele).parent();
$(tdEle).click();
}
</script>
第二种方式
通过使用Primefaces客户端API函数selectRow(r,flag)
,该函数将在p:dataTable
的widgetWar
对象上调用。
这里selectRow(r,flag)
需要两个参数:
r
是需要选择的行的Jquery Row元素()。flag
是布尔值,它指定是否选择ajax。 所以现在我的Javascript函数将是:
<script type="text/javascript">
function myFunction(ele){
var tdEle = $(ele).parent();
var trEle = $(tdEle).parent();
dataTableWidget.selectRow($(trEle),true);
}
</script>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句