Ich habe einen Bildschirm, in dem bestimmte Daten angezeigt werden. Ich verwende Datatable-Option, um die Daten und Rowselector anzuzeigen, um die Zeile auszuwählen. Wenn ich irgendeine Zeile auswähle, erscheint eine Option, über die der Benutzer die Daten bearbeiten kann (wie Bearbeiten und Löschen), aber ich möchte, dass einige Daten nicht editierbar sind.Deaktivieren einer bestimmten Zeile in einer Datentabelle IceFace
Ich habe einen Bildschirm, auf dem ich Daten auf Monatsbasis zeige, als ob der aktuelle Monat August ist, dann zeigt meine Seite die Daten der letzten zwei Monate und die Daten der nächsten 10 Monate.
Jetzt möchte ich aktuelle Monate und vorherige zwei Monate Daten nicht editierbar sein oder deaktivieren Sie bei der Auswahl der Zeile durch Rowselector. enter image description here
Unten ist die meiner Ansicht Seite und rowselector Funktion:
<i:dataTable id="ConfigurationOne"
headerClass="dataTableCommonHeader"
headerClasses="table_header"
columnClasses="stringColumn, stringColumn w80"
rowClasses="level2ColorStyle, level1ColorStyle"
value="#{configOneBean.monthsDateList}" var="row" cellpadding="0"
cellspacing="1" columnWidths="50px,100px" rows="25"
width="40%"
onrowmouseover="this.style.cursor='default';this.style.backgroundColor='#F1F1F1';"
onrowmouseout="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
>
<i:column>
<i:rowSelector value="#{row.selected}"
selectionListener="#{configOneBean.rowSelectMonthsListener}" />
<f:facet name="header">
<i:outputText value="#{resApp['config.type.code']}" />
</f:facet>
<i:panelGroup style="width:200px;overflow:hidden;">
<i:outputText value="#{row.NRPV_NRPA_CODE}" />
</i:panelGroup>
</i:column>
<i:column>
<f:facet name="header">
<i:outputText value="#{resApp['config.type.name']}" />
</f:facet>
<i:panelGroup style="width:200px;overflow:hidden;">
<i:outputText value="#{row.NRPV_CREATED_BY}" />
</i:panelGroup>
</i:column>
</i:dataTable>
public void rowSelectMonthsListener(RowSelectorEvent event) {
int selectRow = event.getRow();
initActionMap();
if (event.isSelected()) {
this.monthsDate = monthsDateList.get(selectRow);
getAllMonthsAndDate();
actionMap.put(WorkMode.EDIT_GROUP, true);
} else {
this.monthsDate = null;
workMode = WorkMode.EMPTY;
}
}
Hallo ** Wis ** danke für deine Antwort .... Könntest du bitte etwas mehr ausarbeiten, oder jeder Beispielcode wäre eine große Hilfe :) –
Ich schlug etwas wie folgt vor: ' 'und in Ihrer verwalteten Bean sollten Sie einen' public boolean isSelectable (Object obj) 'haben wird Ihre Variable 'obj' gegen das aktuelle Datum testen und bestimmen, ob es auswählbar sein soll oder nicht. Beachten Sie, dass ich den Typ Ihrer 'obj' Variablen nicht kenne, vielleicht ein' Date', vielleicht ein 'Calendar' (meine Vermutung, aber könnte Ihr eigener POJO sein). –
Wis
Hallo @Wis danke für deine Antwort ......... ich habe versucht, diese Logik anzuwenden, aber es wird alle Zeilen deaktivieren ..... Ich vergleiche Daten mit dem Monatsnamen und wenn es die Monate finden In der Datentabelle wird dann die gesamte Datentabelle deaktiviert. –