0

我有这个数据表:

<p:commandLink value="ajouter Ligne" update="lesarticles"                       
                        process="@this" actionListener="#{commandeMB.addLigne}" />

                    <p:dataTable   id="lesarticles" var="car" widgetVar="carsTable"
                    rowKey="#{car.ligneCommandeFournisseurId}" selectionMode="single"
                        selection="#{commandeMB.selectedLigneCommandeFournisseur}"
                        value="#{commandeMB.commande.ligneCommandeFournisseurs}" 

                        >

                        <p:column headerText="Numero">

                            <p:autoComplete id="art" required="true" var="p"
                                itemLabel="#{p.numero}" itemValue="#{p}" dropdown="true"
                                requiredMessage="Valeur requise" value="#{car.article}"
                                forceSelection="true" converter="#{articleConverter}"
                                completeMethod="#{commandeMB.completeArticle}">
                                <p:column>#{p.numero}</p:column>
                                <p:column>#{p.designation}</p:column>

                                <p:ajax event="itemSelect"  listener="#{commandeMB.handleSelect}" 
                                update="designation unite pu" />

                            </p:autoComplete>

                            <p:message for="art" display="text" />

                        </p:column>

                        <p:column headerText="designation">
                            <h:outputText id="designation"
                                value="#{car.article.designation}" />
                        </p:column>

                        <p:column headerText="unité">
                            <h:outputText id="unite"
                                value="#{car.article.unite.libelle}" />
                        </p:column>

                        <p:column headerText="PU">
                            <h:inputText id="pu" styleClass="monpu" 
                                value="#{car.PUAchat}" />
                        </p:column>

                        <p:column headerText="Quantité">
                            <h:inputText binding="#{qte}" styleClass="maqte" value="#{car.qte}"  >
                            </h:inputText>
                        </p:column>


                        <p:column headerText="Mt">
                            <h:outputText id="mt" styleClass="monmt"
                                value="#{car.mtLigne}" />
                        </p:column>

                    </p:dataTable>

我希望当用户选择一篇文章(英文产品)(通过自动完成)时,我可以检测到该选择涉及哪一行,以便在托管 bean 端做一些处理

正如您在代码中看到的,我通过以下方式检索所选文章:

    public void handleSelect(SelectEvent event){
    Article art = (Article) event.getObject();

}

但我还想在数据表中检索包含这篇新文章的行

我怎样才能做到这一点

先感谢您

4

2 回答 2

1
<p:dataTable rowIndex="myIndex"/>

然后你可以通过绑定这个值;

<f:setPropertyActionListener target="#{bean.index}" value="#{myIndex}"/>

或者;

<f:param name="myIndex" value="#{myIndex}"></f:param>

为了能够检索附带的值f:param

Map<String, String> map = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        int index = Integer.parseInt(map.get("myIndex"));

您可以将它们放在p:commandLink,p:commandButtonp:ajax中。

于 2013-04-28T19:43:22.237 回答
0

我解决了这个问题:

<p:column headerText="Numero">

                        <p:autoComplete id="art" 
                            required="#{commandeMB.validation}" var="p"
                            itemLabel="#{p.numero}" itemValue="#{p}" dropdown="true"
                            requiredMessage="Valeur requise" value="#{car.article}"
                            forceSelection="true" converter="#{articleConverter}"
                            completeMethod="#{commandeMB.completeArticle}">
                            <p:column>#{p.numero}</p:column>
                            <p:column>#{p.designation}</p:column>

                            <p:ajax event="itemSelect" listener="#{commandeMB.handleSelect}"
                                update="designation unite pu mt" />

                        </p:autoComplete>



                        <p:message for="art" display="text" />

                    </p:column>

在托管 bean 中,我通过以下方式检索相关行:

FacesContext context = FacesContext.getCurrentInstance();
    LigneCommandeFournisseur ligne_concernee = 
    context.getApplication().evaluateExpressionGet(context, "#{car}", LigneCommandeFournisseur.class);
于 2013-04-29T05:34:55.153 回答