2013-04-03 75 views
0

我有一个复选框列的dataTable。来自dataTable的数据我加载数据库。到目前为止,一切进展顺利。我需要在某些情况下出现一些复选框标记,因为我这样做?带有复选框的DataTable jsf

以下数据表代码:

<p:dataTable id="dataTable" var="valor" 
         style="width:100%; text-align:center" 
         value="#{beanMensagemXContato.dataModelMsg}" 
         paginator="true" rows="5" 
         paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
         rowsPerPageTemplate="5,10,15" 
         selection="#{beanMensagemXContato.selectedMensagens}"> 



         <f:facet name="header"> 
          Mensagens 
         </f:facet> 

         <p:column selectionMode="multiple" style="width:5%"> 

         </p:column>      

         <p:column> 
          <f:facet name="header"> 
           <h:outputText value="Código" /> 
          </f:facet> 
          <h:outputText value="#{valor.idtMensagem}" /> 
         </p:column> 

         <p:column> 
          <f:facet name="header"> 
           <h:outputText value="Mensagem" /> 
          </f:facet> 
          <h:outputText value="#{valor.nomMensagem}" /> 
         </p:column> 

         <p:column> 
          <f:facet name="header"> 
           <h:outputText value="Descrição" /> 
          </f:facet> 
          <h:outputText value="#{valor.desMensagem}" /> 
         </p:column> 

         <p:column> 
          <f:facet name="header"> 
           <h:outputText value="Configurador" /> 
          </f:facet> 
          <h:outputText value="#{valor.indConfigurador}" /> 
         </p:column> 
        </p:dataTable> 

直到下面的代码是列表中正确加载,屏幕只显示所选择的记录之一。

listaMsgContato = consultaContatoEmail.listarMensagensAssociadas(selectedConsulta.getIdtContato()); 
     int l=0; 
     int tamanho = listaMsgContato.size(); 
     selectedMensagens = new Mensagem[tamanho]; 
     for(int i=0; i<listaMsgContato.size(); i++){    
      for(int j=0; j<listaMsg.size();j++){ 
       System.out.println("Lista Msg Contato: " + listaMsgContato.get(i).getIdtMensagem() + " - Lista Msg: " + listaMsg.get(j).getIdtMensagem()); 
       if((long)listaMsgContato.get(i).getIdtMensagem()==(long)listaMsg.get(j).getIdtMensagem()){ 
        System.out.println("Entrou"); 
        //Fazer o selectedMensagens receber os valores. 
        selectedMensagens[l]=listaMsg.get(j);     
        l++;  
       } 
      }   
     } 

我想你错过了我的xhtm中的一些东西。

+0

发布使用复选框的代码段 – Daniel 2013-04-03 19:30:53

+0

INMO你的表和列,你应该添加所需的元素/秒到'selectedMensagens' ,'selectedMensagens'应该代表所选择的行...,在服务器端执行该逻辑(在@ @ PostConstruct'中用于例子如果'dataModelMsg'中的某个元素满足条件,则应该将它添加到'selectedMensagens' – Daniel 2013-04-03 19:37:04

+0

好吧!我会尽力。谢谢! – Deb 2013-04-03 19:44:02

回答

0

未与primefaces选择列的工作,但...

INMO你应该添加所需的元素/秒到selectedMensagensselectedMensagens应该代表选定的行...,做服务器端的是逻辑(在@PostConstruct为例),如果从dataModelMsg某一个元素满足条件,就应该把它添加到selectedMensagens