按Enter键按下打开主面数据表中的对话框

时间:2013-10-24 19:55:56

标签: jsf jsf-2 primefaces

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

任何人都可以告诉我如何避免这种情况吗?谢谢。

1 个答案:

答案 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; }">