Für ein Grid-Control kann über die Einstellung "MultiSelect" gesteuert werden, od dieses Control die Auswahl von mehr als einem Datensatz erlaubt.
Gültige Einstellungen sind:Yes - Es können mehrere Datensätze ausgewählt werden.No - Es kann immer nur ein Datensatz ausgewählt werden.
Auswahl eines Datensatzes
Auswahl mehrerer Datensätze
Zugriff auf die aktuelle Selektion (einer oder mehrere) erhält man wie folgt beschrieben:
Ist nur ein Datensatz markiert, bzw. soll mit einfacher Auswahl gearbeitet werden (MultiSelect = No), kann der ausgewählte Datensatz über den aktuellen DataSource-Cursor der Grid-Control DataSource ermittelt werden.Der DataSource-Cursor steht immer auf dem zu letzt ausgewählten Datensatz eines Grid-Control's.
Beispiel:
void clicked(){ //CustTable ist die DataSource des Grid-Controls ; //Datenoperationen für den Datensatz ausführen. //Do something.... info(CustTable.AccountNum); //Angezeigte Datensätze im Grid Control aktualisieren element.lockWindowUpdate(true); CustTable_ds.research(); element.lockWindowUpdate(false);}
Soll eine Mehrfachauswahl möglich sein, reicht der Zugriff auf den aktuellen DataSource-Cursor nicht mehr aus. Um alle ausgewählten Datensätze der DataSource zu erhalten, muss diese mit einer Schleife unter Verwendung der Methoden "getFirst" und "getNext" durchlaufen werden. Hilfreich hierbei ist die Methode "anyMarked", mit welcher ermittelt werden kann ob mehrere Datensätze ausgewählt sind oder nicht.
Auch hierfür ein Beispiel:
void clicked(){ CustTable selectedCustTable; Common currentRecord; ; if (CustTable_ds.anyMarked()) //Es sind meherer Datensätze selektiert. { //Ersten selektierten Datensatz ermitteln. selectedCustTable = CustTable_ds.getFirst(1); while(selectedCustTable) { //Datenoperationen für den Datensatz ausführn. //Do something.... info(selectedCustTable.AccountNum); //Nächsten selektieren Datensatz ermitteln. selectedCustTable = CustTable_ds.getNext(); } } else //Nur ein Datensatz ist selektiert. { //Selektierten Datensatz ermitteln. currentRecord = CustTable_ds.cursor().data(); selectedCustTable = CustTable_ds.cursor(); //Datenoperationen für den Datensatz ausführen. //Do something.... info(selectedCustTable.AccountNum); } //Angezeigte Datensätze im Grid Control aktualisieren element.lockWindowUpdate(true); CustTable_ds.research(); CustTable_ds.findRecord(currentRecord); CustTable_ds.refresh(); element.lockWindowUpdate(false);}
Der Quellcode des Beispiels:
Remember Me
Subscribe in a reader