3

我有一个数据表,其中实现了单元格编辑器功能。我有两列具有编辑和删除功能。当我单击编辑时,单元格编辑器会显示,用户可以编辑值并保存它们。以同样的方式,当用户单击删除时,会弹出一个包含用户详细信息的对话框。现在我的问题是当我单击编辑并且当我专注于我的一个输入字段并按 Enter 时弹出对话框。我不希望这样发生:这是我的 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>

谁能告诉我如何避免这种情况?谢谢。

4

1 回答 1

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; }">
于 2013-10-25T17:43:51.480 回答