Richfaces datatable - l'ajout d'une nouvelle ligne sans l'ensemble datatable nouveau rendu sur le côté client

StackOverflow https://stackoverflow.com/questions/4552491

Question

La nouvelle ligne peut être ajouté à la collection côté serveur associé à un événement d'action d'un bouton de commande ou un lien de commande, et la ligne nouvellement ajoutée peut être affiché sur le client si toute la table est re- rendu .

Est-il possible d'afficher la nouvelle ajouté rangée du côté client sans avoir besoin de rafraîchir l'ensemble datatable , en utilisant la partie rendu , avec l'aide de AjaxKeys ou quelque chose?

Merci d'avance pour toute aide:)

Était-ce utile?

La solution

Vous devez rerender toute datatable si vous ajoutez une nouvelle ligne. AjaxKeys peut être utile si vous voulez rerender les colonnes existantes.

Autres conseils

Je suis très intéressé aussi connaître une réponse à votre question, Je peux y parvenir en utilisant Javascript traditionnel, mais quand je l'utilise riche. Datatable Je ne peux pas ajouter de nouvelles lignes sur le client

Mais je l'ai fait en utilisant Ajax appels à des fonctions de serveur, cette fonction ajouter une nouvelle ligne vide à la liste dataTable et rendre les riches. Datatable à nouveau

ma page xhtml

<rich:column>
<f:facet name="header"><h:outputLabel value="#{msgs.notes}" style="font-size:15px;"/> </f:facet>
<h:inputText    value="#{line.notes}" >
    <a4j:ajax   event="blur" 
    execute="datatable" 
    render="datatable" 
    immediate="true" 
    listener="#{saleBacking.addNewLineInDataTable}"
    oncomplete="document.getElementById('myform:datatable:#{saleBacking.view_no_counter-1}:line').focus();"/>
</h:inputText>
</rich:column>

et dans la fève maneged

public void addNewLineInDataTable(AjaxBehaviorEvent event)
    {
        SaleLine saleLine = new SaleLine();
        saleLine.setId(salesLineslist.isEmpty() ? 1 : salesLineslist.get(salesLineslist.size() - 1).getId() + 1);
        salesLineslist.add(saleLine);
        saleLine = new SaleLine();
        saleLine = new SaleLine();
        saleLine.setSaleId(sale);
        saleLine.setViewNo(++view_no_counter);
        saleLine.setDiscount(0d);
        saleLine.setItemPrice(0d);
        salesLines.add(saleLine);
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top