2013-07-25 120 views
0

我已經定義是這樣我的數據表:多選奇怪的行​​爲

<p:dataTable id="sifarnikTable" rowIndexVar="rowIndex" 
        value="#{attrsBean.listOfDataBeans}" editable="true" 
        selectionMode="multiple" selection="#{attrsBean.selektovani}" 
        widgetVar="datatableWidget" var="row" rowKey="#{row.primaryKey}" 
        paginator="true" paginatorPosition="bottom" 
        paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}" 
        currentPageReportTemplate="{startRecord} - {endRecord}/{totalRecords}" 
        emptyMessage="#{messages['datatable.emptymessage']}" rows="15" 
        sortMode="multiple" paginatorAlwaysVisible="false" styleClass="newStyle" 
        filteredValue="#{attrsBean.filteredDatatableList}"> 


        <p:ajax event="rowSelect" /> 
        <p:ajax event="rowUnselect" /> 

        <p:ajax event="rowEdit" listener="#{attrsBean.onEdit}" 
         update=":aswdatatable:form:messages, :aswdatatable:form:sifarnikTable, :aswdatatable:form:noviBtn" /> 

        <p:ajax event="rowEditCancel" listener="#{attrsBean.onCancel}" 
         update=":aswdatatable:form:messages" /> 

    <p:columns id="columns" var="column" value="#{attrsBean.columns}" 
       style="#{column.css}" width="#{column.width}" 
       sortBy="#{row[column.property]}" 
       filterStyle="#{attrsBean.columnCSS}" 
       filterBy="#{attrsBean.showFilter==false ? null : row[column.property]}"> 
       <f:facet name="header"> 
        <h:outputText value="#{column.header}" /> 
       </f:facet> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{row[column.property]}" /> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{row[column.property]}" style="width:96%"></p:inputText> 
        </f:facet> 
       </p:cellEditor> 

      </p:columns> 
       <p:column style="width:6px" exportable="false" >     
        <p:rowEditor /> 

       </p:column> 
       <p:column style="width:6px" exportable="false"> 
        <div 
         onclick="datatableWidget.unselectAllRows();datatableWidget.selectRow(#{rowIndex}, false);"> 
         <h:panelGroup layout="block"> 
          <p:cellEditor> 
           <f:facet name="output"> 

            <p:commandLink id="deleteBtn" 
             onclick="datatableWidget.unselectAllRows();datatableWidget.selectRow(#{rowIndex}, false);brisanjeWidget.show()" 
             process="@this" 
             update=":aswdatatable:form:brisanjeDisplay, :aswdatatable:form:sifarnikTable" 
             styleClass="ui-icon ui-icon-trash"> 

             <f:setPropertyActionListener 
              target="#{attrsBean.modelForDelete}" value="#{row}" /> 
            </p:commandLink> 
           </f:facet> 
           <f:facet name="input"> 
            <h:outputText value="" /> 

           </f:facet> 
          </p:cellEditor> 
         </h:panelGroup> 
        </div> 
       </p:column> 


      </p:dataTable> 

的一個問題是,當我選擇項目的行爲是有些奇怪。有時,當我點擊特定的行時,它不會選擇它,有時它會,有時我需要點擊多次才能選擇一行。誰能幫忙?也許我沒有看到什麼。

相關支持bean代碼:

@PostConstruct 
public void init() { 
    ... 
    selektovani = new ArrayList<BasicModel>(); 
    ... 
} 
+0

發佈您的backbean代碼。 – Makky

+0

我已更新帖子。 –

+0

我也試過沒有' '但是beahaviour是一樣的。 –

回答

0

我能找到的唯一答案是從datatable.js覆蓋onRowClick功能。更改內容爲if ($(event.target).is("td,span:not(.ui-c)")) {,我剛剛更改爲if ($(event.target).is("td,span:not(.ui-c),.ui-cell-editor-output")) {,現在它可以正常工作。我知道這不是好的方法。