...feel the spirit of Microsoft Dynamics AX RSS 2.0
 Wednesday, January 02, 2008

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.

GridSelectedOneRecord
Auswahl eines Datensatzes

GridSelectedMultipleRecords
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:

Form_GridSelectedRecords.xpo (6.2 KB)

Wednesday, January 02, 2008 9:39:57 PM (Mitteleuropäische Zeit, UTC+01:00)  Axel Kühn  #    Comments [2] - Trackback
 | 

Thursday, January 03, 2008 10:56:50 AM (Mitteleuropäische Zeit, UTC+01:00)
Um unnötige Code Verdoppelungen zu vermeiden, kann man auch mit einer for-Schleife arbeiten:

void clicked()
{
CustTable custTable;
;
for (custTable = CustTable_ds.getFirst(true) ?
CustTable_ds.getFirst(true) :
CustTable_ds.cursor();
custTable;
custTable = CustTable_ds.getNext())
{
//do something with custTable
info(custTable.accountNum);
}
}

CustTable_ds.getFirst() gibt nur etwas zurück, wenn mehrere Datensätze markiert sind. Man kann sich also die Abfrage nach CustTable_ds.anyMarked() sparen.
Thursday, January 03, 2008 1:33:31 PM (Mitteleuropäische Zeit, UTC+01:00)
Hallo Gert,

vielen Dank für die Anmerkung.
All comments require the approval of the site owner before being displayed.
Name
E-mail
Home page

Comment (Some html is allowed: )  

Enter the code shown (prevents robots):



Translate
Über/Kontakt

     







© Copyright 2009 Axel Kühn
Sign In
Subscribe this blog
Archiv
<January 2009>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567
Statistik
Gesamte Posts: 96
Dieses Jahr: 0
Dieser Monat: 0
Diese Woche: 0
Kommentare: 45





All Content © 2009, Axel Kühn
DasBlog theme 'Business' created by Christoph De Baene (delarou)