DataGridView zur Laufzeit füllen lassen



  • Hallo, ich bins mal wieder 😉

    Ich habe eine DataGridView, welche ich während das Programm läuft durchsuchen will, und dann ggf. füllen lasse, wenn die Kriterien nicht stimmen.

    Beispiel:
    Person XY scannt seinen Ausweis, das Programm soll nun nach Druck auf den Button "OK" suchen, ob sich Person XY bereits in dem DataGridView befindet.
    Ist dies nicht der Fall, so soll ein neuer Datensatz angelegt werden, der folgende Informationen beinhaltet:
    1. Den Namen von Person XY in Spalte 1
    2. Den Zeitpunkt des Scannens in Spalte 2
    Ist Person XY bereits im DataGridView aufgelistet, so sind diese beiden Daten ja bereits vorhanden. In diesem Falle soll der Datensatz um folgende Details erweitert werden:
    1. Den Zeitpunkt des zweiten Scannens in Spalte 3
    2. Die Kosten die über eine feste Formel an Hand der Zeitdifferenz berechnet werden.

    Mein Problem sind zum einen das Durchsuchen des DataGridViews, zum Anderen dass Einfügen in eine neue Zeile.

    Soweit mein Code für den Button "OK":

    private: System::Void buttonOK_Click(System::Object^  sender, System::EventArgs^  e) 
    			 {
    				 Int32 j = dataGridView1 -> Rows -> Count;
    
    				 dataGridView1 -> Rows[0] -> Cells[0] -> Value = textBoxScanner -> Text;
    				 dataGridView1 -> Rows[0] -> Cells[1] -> Value = Convert::ToString(DateTime::Now);
    
    				 /*if(textBoxScanner -> Text ==  String::Empty)
    				 {
    					 MessageBox::Show("Namen eingeben oder Kundenkarte scannen!");
    					 textBoxScanner -> Select();
    				 }
    				 else
    				 {
    					 for(Int32 i = 0; i < dataGridView1 -> Rows -> Count; i++)
    					 {
    						 if(dataGridView1 -> Rows[i] -> Cells[0] -> Value != textBoxScanner -> Text)
    						 {
    							 dataGridView1 -> Rows -> Add();
    							 dataGridView1 -> Rows[1] -> Cells[0] -> Value = textBoxScanner -> Text;
    							 dataGridView1 -> Rows[1] -> Cells[1] -> Value = Convert::ToString(DateTime::Now);
    						 }
    					 }
    				 }*/
    			 }
    

    Der auskommentierte Bereich ist der, der mir Schwierigkeiten macht, die beiden Anweisungen darüber waren nur zum Testen und funktionieren ohne Probleme.

    Ich würde mich sehr über Anregungen freuen.

    MfG,
    Son



  • Verwende DataBinding (DataGridView.DataSource - evtl. mit einer BindingSource), anstatt das manuelle Bearbeiten des DGVs, s. z.B. A Detailed Data Binding Tutorial.

    PS: Hast du schon Windows Forms und Visual C++ MACHT KEINEN SINN! gelesen?
    Sofern du nicht wirklich Interop-Programmierung machst, solltest du besser C# für dein Projekt (zumindestens für WinForms) verwenden.


Anmelden zum Antworten