我有一个数据表,我在其中实现了单元格编辑器功能。我有两列编辑和删除功能。当我单击编辑时,单元格编辑器显示,用户可以编辑值并保存它们。以同样的方式,当用户点击删除时会弹出一个包含用户详细信息的对话框。现在我的问题是当我点击编辑时,当我专注于我的一个输入字段并按下输入对话框弹出时。我不想这样做发生:这是我的JSF代码:
<p:dataTable value="#{mybean.userList}"
var="item"
id="dataTab"
widgetVar="usersTable"
tableStyleClass="data" paginator="true" rows="5"
filteredValue="#{userController.filteredUsers}"
editable="true"
rowKey="#{item}"
>
<p:ajax event="rowEdit" listener="#{mybean.onEdit}" update=":userForm:growl" />
<p:ajax event="rowEditCancel" listener="#{mybean.onCancel}" update=":userForm:growl" />
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="('usersTable').filter()" style="width:150px" />
</p:outputPanel>
</f:facet>
<p:column sortBy="#{item.firstName}" filterBy="#{item.firstName}"
filterMatchMode="startsWith">
<p:cellEditor>
<f:facet name="header">
<h:outputText value="First Name" />
</f:facet>
<f:facet name="output">
<h:outputText value="#{item.firstName}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.firstName}" style="width:100%"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="#{item.lastName}" filterBy="#{item.lastName}" filterMatchMode="startsWith">
<p:cellEditor>
<f:facet name="header">
<h:outputText value="Last Name" />
</f:facet>
<p:column headerText="Update" style="width:6%">
<p:rowEditor />
</p:column>
<p:column>
<p:commandButton oncomplete="delUserConf.show();" update=":userForm:display" >
<f:setPropertyActionListener value="#{item}" target="#{myController.selectedUser}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:dialog id="modalDialog"
header="Delete User?"
modal="true"
resizable="false"
draggable="false"
widgetVar="delUserConf"
>
<h:panelGrid id="display" columns="2" style="width: 150px;">
<h:outputLabel value="Firat Name" style="font-weight: bold"/>
<h:outputText value="Last Name" style="border: none"/>
</h:panelGrid>
</p:dialog>
任何人都可以告诉我如何避免这种情况吗?谢谢。
答案 0 :(得分:9)
我认为这会对你有所帮助。我的建议是你必须将它添加到<p:dataTable value="#{mybean.userList}"...
onkeypress="if (event.keyCode == 13) {return false; }"
假设<p:dataTable>
的包装形式为<h:form id="formm">
然后你必须编辑你的表格标签,如
<h:form id="formm" onkeypress="if (event.keyCode == 13) {return false; }">