In unseren Schulungen werden immer mal Fragen zum Interactiven Grid gestellt, die sehr interessant sind. Hier eine kleine Auswahl:
Vorraussetungen:
- Es gibt ein Grid auf die Scott.emp Tabelle mit der Static ID EMP
- Es gibt eine Selectbox mit Namen P1_JOB
- Es soll im Grid für die EMP Tabelle, der Job für alle Mitarbeiter auf einen einheitlichen Wert gesetzt werden, der in einem Item ausserhalb des Grids steht:
var model = apex.region("EMP").widget().interactiveGrid("getViews", "grid").model;
model.forEach(function(r) {
model.setValue(r, "JOB", $v("P1_JOB" )); // Setzen des Jobs pro Zeile
})
2. Es sollen nur die mit der im Grid enthaltenen Checkbox (Spalte 1) ausgewählten Einträge geändert werden:
var grid = apex.region("EMP").widget().interactiveGrid("getViews","grid");
var model = grid.model;
var selectedRecords = grid.getSelectedRecords();
//console.log("Records" +selectedRecords.length);
for (idx = 0; idx < selectedRecords.length; idx++) {
record = model.getRecord(selectedRecords[idx][0]);
model.setValue(record, "JOB", $v( "P1_JOB" ));
//console.log(idx+ " " + selectedRecords[idx][1] ); //Felder [1] EMPNO [2] ENAME, [3] JOB ...
}
3. Sie möchten das zurückschreiben in die DB selbst erledigen, kein Problem. Ersetzen Sie den Prozeß durch:
IF :APEX$ROW_STATUS='C' THEN
INSERT INTO emp (empno,ename,job,mgr,hiredate,sal,comm,deptno)
VALUES (:EMPNO,:ENAME,:JOB,:MGR,:HIREDATE,:SAL,:COMM,:DEPTNO);
ELSIF :APEX$ROW_STATUS='U' THEN
UPDATE emp SET
ename=:ENAME,job=:JOB, mgr=:MGR,hiredate=:HIREDATE ,sal=:SAL,comm=:COMM, deptno=:DEPTNO
WHERE empno=:EMPNO ;
ELSIF :APEX$ROW_STATUS='D' THEN
DELETE FROM emp
WHERE empno=:EMPNO;
END IF;
Das war ein kleiner Auszug aus den vielen Fragen in unseren APEX Kursen. Sie haben auch Fragen? Dann kommen Sie doch in einen unserer Kurse…. wir freuen uns auf Sie !