Textbox Eingabe in einem ungebundenem DataGridView suchen

joe81

Grünschnabel
Hallo @ all

Es geht um C# und eine Form Anwendung.

Ich habe eine Textbox (tb1) in der ich eine Eingabe mache. Dieser String soll in meinem ungebundenen DataGridView (DGV) gesucht werden. Das DGV hat vier Spalten. Stimmt der String mit einem Eintrag in der ersten Spalte(Nummer) überein, so soll die dritte Spalte (Name), der gleichen Zeile, an eine zweite Textbox(tb2) ausgegeben werden.

So sollte es aussehen:
screenshot022n.jpg


ich bin ein schritt weiter:

Code:
private void button1_Click(object sender, EventArgs e)
        {
           
           string Eingabe = textBox1.Text;
            
            int rowIndex = Convert.ToInt16(Eingabe);
            string columnName = "nAMEDataGridViewTextBoxColumn";
            
            // Den Index der Spalte ermitteln
            int columnIndex = this.dataGridView1.Columns[columnName].Index;
            
            // Die Zelle referenzieren, die in der ermittelten Spalte und der aktuellen Zeile liegt
            DataGridViewCell cell = this.dataGridView1[columnIndex, rowIndex];
            if (cell.Value != DBNull.Value && cell.Value != null)
            {
                // Den in dieser Zelle gespeicherten Wert auslesen ...
                string test = Convert.ToString(cell.Value);
                // und weiter verarbeiten ...

                textBox2.Text = Convert.ToString(test);
            }

         }

Ich kann in tb1 den rowindex eingeben und herauskommt der Name. Bring mich aber nicht wirklich weiter.

Ich hab nun Stunden gegoogelt und komme einfach nicht weiter. Denkanstösse oder Lösungsansätze sind sehr willkommen.

MFG Joe
 
Zuletzt bearbeitet:

rd4eva

Erfahrenes Mitglied
So ganz versteh ich nicht wo das Problem liegt.
Eine schnell mal gekritzelte Lösung wäre Beispielsweise folgende:
C#:
private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            string enteredText = (sender as TextBox).Text;
            DataGridViewRow row;            
            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                row = dataGridView1.Rows[i];                
                if (row.Cells[0].Value.ToString().Equals(enteredText))
                {
                    dataGridView1.CurrentCell = row.Cells[0];
                    textBox2.Text = row.Cells[2].Value.ToString();
                    break;
                }
            }
        }
 

joe81

Grünschnabel
Du bist ein Goldstück. Dein Ansatz hab ich einwenig angepasst und nun funktioniert es einwandfrei.

Code:
private void button1_Click(object sender, EventArgs e)
        {
            string enteredText = textBox1.Text; 
            
            //string enteredText = (sender as TextBox).Text;
            DataGridViewRow row;
            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                row = dataGridView1.Rows[i];
                if (row.Cells[0].Value.ToString().Equals(enteredText))
                {
                    dataGridView1.CurrentCell = row.Cells[0];
                    textBox2.Text = row.Cells[2].Value.ToString();
                    break;
                }
            }

Jetzt muss ich die werte der Textboxen in Variablen schreiben unb an eine CSV-Datei übergeben.

ICH DANKE TAUSENDMAL. Ich bin den ganzen Tag auf der Suche und hab rumgestestet.

MFG Joe