2017-12-26 7 views
0

Ich möchte neue Zeile zum Einfügen von Daten erstellen, wenn ich die Eingabetaste im InputText Feld drücken. Ich habe versucht, dies zu erreichen, indem ich Javascript benutze, um zu überprüfen, ob die Eingabetaste gedrückt ist, und Client- und Server-Listener auf das Eingabefeld einzustellen, aber nicht zu funktionieren scheint. Kann mir jemand helfen, wo liege ich falsch? Meine JSFF Seite:Oracle ADF erstellen neue Zeile beim Drücken der Eingabetaste am Eingangstext

<?xml version='1.0' encoding='UTF-8'?> 
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:af="http://xmlns.oracle.com/adf/faces/rich" 
      xmlns:f="http://java.sun.com/jsf/core"> 
      <af:resource type="javascript"> 
function handleEnterEvent() { 
    var _keyCode = evt.getKeyCode(); 
    if (_keyCode == AdfKeyStroke.ENTER_KEY){  
     var comp = evt.getSource(); 
     AdfCustomEvent.queue(comp, "EnterEvent", {fvalue:comp.getSubmittedValue()}, false); 
     evt.cancel(); 

    } 
} 
</af:resource> 
<af:table value="#{bindings.TransMstView1.collectionModel}" var="row" 
rows="#{bindings.TransMstView1.rangeSize}" 
     emptyText="#{bindings.TransMstView1.viewable ? 'No data to display.' : 'Access Denied.'}" 
     rowBandingInterval="0" fetchSize="#{bindings.TransMstView1.rangeSize}" id="t1"> 
<af:column headerText="#{bindings.TransMstView1.hints.TrNo.label}" id="c1"> 
    <af:inputText value="#{row.bindings.TrNo.inputValue}" label="#{bindings.TransMstView1.hints.TrNo.label}" 
       required="#{bindings.TransMstView1.hints.TrNo.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrNo.displayWidth}" 
       maximumLength="#{bindings.TransMstView1.hints.TrNo.precision}" 
       shortDesc="#{bindings.TransMstView1.hints.TrNo.tooltip}" id="it1"> 
    <f:validator binding="#{row.bindings.TrNo.validator}"/> 
    <af:convertNumber groupingUsed="false" pattern="#{bindings.TransMstView1.hints.TrNo.format}"/> 
    </af:inputText> 
</af:column> 
<af:column headerText="#{bindings.TransMstView1.hints.TrDt.label}" id="c2"> 
    <af:inputDate value="#{row.bindings.TrDt.inputValue}" label="#{bindings.TransMstView1.hints.TrDt.label}" 
       required="#{bindings.TransMstView1.hints.TrDt.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrDt.displayWidth}" 
       shortDesc="#{bindings.TransMstView1.hints.TrDt.tooltip}" id="id1"> 
    <f:validator binding="#{row.bindings.TrDt.validator}"/> 
    <af:convertDateTime pattern="#{bindings.TransMstView1.hints.TrDt.format}"/> 
    </af:inputDate> 
</af:column> 
<af:column headerText="#{bindings.TransMstView1.hints.TrMode.label}" id="c3"> 
    <af:inputText value="#{row.bindings.TrMode.inputValue}" label="#{bindings.TransMstView1.hints.TrMode.label}" 
       required="#{bindings.TransMstView1.hints.TrMode.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrMode.displayWidth}" 
       maximumLength="#{bindings.TransMstView1.hints.TrMode.precision}" 
       shortDesc="#{bindings.TransMstView1.hints.TrMode.tooltip}" id="it2"> 
    <f:validator binding="#{row.bindings.TrMode.validator}"/> 
    <af:convertNumber groupingUsed="false" pattern="#{bindings.TransMstView1.hints.TrMode.format}"/> 
    </af:inputText> 
</af:column> 
<af:column headerText="#{bindings.TransMstView1.hints.TrType.label}" id="c4"> 
    <af:inputText value="#{row.bindings.TrType.inputValue}" label="#{bindings.TransMstView1.hints.TrType.label}" 
       required="#{bindings.TransMstView1.hints.TrType.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrType.displayWidth}" 
       maximumLength="#{bindings.TransMstView1.hints.TrType.precision}" 
       shortDesc="#{bindings.TransMstView1.hints.TrType.tooltip}" id="it3"> 
    <f:validator binding="#{row.bindings.TrType.validator}"/> 
    <af:convertNumber groupingUsed="false" pattern="#{bindings.TransMstView1.hints.TrType.format}"/> 
    <af:clientListener method="handleEnterEvent" type="keyPress"/> 
    <af:serverListener type="EnterEvent" method="# 
{backingBeanScope.backing_mas.handleEnterEvent}"/> 
</af:inputText> 


</af:column> 
</af:table> 
</ui:composition> 

Meine Methode in Backing Bean:

public void handleEnterEvent(ClientEvent ce) { 

    ViewObject vo = this.getTransMstView1(); 
    vo.executeEmptyRowSet(); 
    Row row = vo.createRow(); 
    vo.insertRow(row); 
    vo.setCurrentRow(row); 

    } 
+0

Ihre JS-Funktion handleEnterEvent sollte einen Parameter (evt) haben! –

+0

Das hat nicht funktioniert. – SHA

Antwort

0

Es gibt eine einfachere Lösung, und das ist af:subform zu verwenden, ist es ein Attribut namens defaultcommand, die eine Schaltfläche zuordnet, Diese Schaltfläche wird ausgeführt, wenn Sie in einem Eingabetext die Eingabetaste drücken!

+0

af: Unterformular würde nur für Formular funktionieren, wenn ich Recht habe. Aber meine Anforderung ist, dass ich das Datensteuerelement ziehe und Tabellensicht nicht Formularansicht wähle. – SHA

Verwandte Themen