Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Text von DataGrid auslesen
Austria88 - Mo 11.04.11 13:24
Titel: Text von DataGrid auslesen
Hallo.
Ich habe eine Datenbank erstellt und zeige sie mithilfe von DataGridView an.
Jetzt hab ich mir überlegt eine Benutzer und Passwort Abfrage zu erstellen und zwar mit den Benutzer und dem dazugehörigen Passwort das in der Datenbank bzw. im DataGrid vorhanden ist.
Meine Frage wie bekomme ich die Daten aus einer Zelle vom DataGrid und kann sie als Text auslesen.
Meine Idee wäre dann ungefähr so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if (textBoxPasswort.text == Der Text vom DataGrid)
{ messageBox.show("Richtiges Passwort") }
else
{ messageBox.show("Passwort Falsch") } |
Danke schon mal im voraus.
Lg Austria
Moderiert von
Kha: C#-Tags hinzugefügt
Austria88 - Mo 11.04.11 23:31
Danke für die Antwort :)
ittlerweile habe ich ein neues Problem:
Ich hab ein PasswortAbfrage Fenster wo man den Benutzernamen und das Passwort eingeben muss und die Daten werden von der Tabelle
pass entnommen. Die Tabelle kann ich nach belieben mit dataGridView ändern bzw. einen neuen benutzer mit passwort anlegen.
Bei dem Passwort Abfrage Fenster hab ich den "OK-Button" wie folgt programmiert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| if (textBox1.Text == this.dataGridView1.Rows[0].Cells[1].Value.ToString() & textBox2.Text == this.dataGridView1.Rows[0].Cells[2].Value.ToString() || textBox1.Text == this.dataGridView1.Rows[1].Cells[1].Value.ToString() & textBox2.Text == this.dataGridView1.Rows[1].Cells[2].Value.ToString() { Form7 Form7 = new Form7(); Form7.Show();
this.Close(); }
else { MessageBox.Show("Passwort Falsch"); } |
Wenn aber jetzt aber eine Zeile nicht vorhanden is bzw NULL ist bekommen ich eine Fehlermeldung.
Diese Form wie ich programmiert habe ist nicht wirklich die effektivste weil ich ja eigentlich unendlich viele IF Abfragen einfügen müsste.
Ich hätte die Idee eine Art Schleife einzufügen, aber hab nicht wirklich eine Plan wie ich da rangehe.
Ist die Lösung hierbei eine Schleife oder ist eine andere Methode besser?
Ich hoffe du verstehst annähernd was ich haben möchte. :)
Lg Austria
m-s - Mi 13.04.11 13:08
Mal so ohne konkret :)
Wenn Du den Namen in Deiner Tabelle eindeutig machst, dann brauchst Du ja eigentlich "nur" nach dem Namen (der im Textfeld steht) in der Tabelle suchen und vergleichen ob das Passwort stimmt. Ist Name nicht vorhanden oder Passwort falsch gibst Du eine Meldung aus.
Hilft das weiter?
Austria88 - Mi 13.04.11 14:33
Hmm.. Ein interessanter Aspekt.
Die Idee ist wirklich gut. :) Logischerweise dürfte dann keine Fehlermeldung mehr bzw. ein einfrieren möglich sein.
Die Frage ist jetzt wiederum wie ich an die Sache rangehe.
:arrow: Meine Idee nach deinem Lösungsvorschlag wäre dann wie folgt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| if (textBoxBenutername.Text = Irgendein BenutzerFeld im Datagrid in der Spalte "Benutzername") { if (TextBox2.Text = Passwort des jenigen Benutzerfeld in der Spalte "Passwort") { MessageBox.Show("Richtig"); } else { messageBox.show("Benutzer nicht vorhanden oder Passwort falsch"); } }
else { messageBox.show("Benutzer nicht vorhanden oder Passwort falsch"); } |
Das würde genügen. Den Benutzer mitzuteilen was genau an der Eingabe falsch ist möchte ich nicht machen, um einen missbrauch vorzubeugen. :idea:
Wie genau setzte ich das jetzt um. Die Befehle in C# sind mir leider noch nicht sehr vertraut, da ich erst seit 2 Wochen damit arbeite.
LG Austria
m-s - Mi 13.04.11 15:34
So richtig Fit bin ich leider auch nicht.
Mal so nebenbei, bei den Vergleichen (If Abfrage) fehlt Dir ein = Zeichen, sonst weist Du etwas zu ;)
Aber im Prinzip wurde das ja im o.g. Link beantwortet.
Vor der If Abfrage gehst Du in Deine Datenbank und suchst den entsprechenden Datensatz. Dann hast Du die Propertys für den Vergleich
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var produktRow = antiviruslizenzDataSet.produkt.First(x => x.id == Convert.ToInt32(produktComboBox.SelectedValue)); var kundenRow = antiviruslizenzDataSet.kunde.First(x => x.id == Convert.ToInt32(kundeComboBox.SelectedValue));
string regtext = produktRow.regtext; |
In Deinem Fall musst Du denn eben nach dem Namen suchen.
Austria88 - Do 14.04.11 00:38
Soooo.. Thema erledigt :)
Ich habs auf eine andere Art hinbekommen.
Für alle die auch danach suchen und zufällig hier gelandet sind hier die Lösung.
Ich durchsuche die DataGridView nach dem eingegebenen Benutzernamen und dem dazugehörigen Passwort und benutze dazu eine Schleife.
Das Passwort kommt in eine TextBox die aber versteckt ist und wird dann mit dem eingebenen Passwort verglichen. Ist es gleich kommt man weiter, wenn nicht kommt eine Fehlermeldung. Ist zwar nicht die Beste Lösung, funktioniert aber. :wink:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| string eingegebenerText = textBox1.Text;
DataGridViewRow row; for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { row = dataGridView1.Rows[i]; if (row.Cells[1].Value.ToString().Equals(eingegebenerText)) { dataGridView1.CurrentCell = row.Cells[1]; textBox2.Text = row.Cells[2].Value.ToString(); if (textBox2.Text == textBox3.Text) { Form7 Form7 = new Form7(); Form7.Show();
this.Close(); }
else if (textBox2.Text != textBox3.Text) { MessageBox.Show("Benutzername oder Passwort falsch!"); }
} |
Danke nochmal für eure Hilfe. :!:
Lg Austria
m-s - Do 14.04.11 11:26
Ich habe das jetzt nicht wirklich probiert, aber müsste das nicht so gehen, oder so ähnlich?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| DataGridViewRow row; for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { row = dataGridView1.Rows[i]; if (row.Cells[1].Value.ToString().Equals(textBox1.Text)) { if (row.Cells[2].Value.ToString() == textBox3.Text) { Form7 Form7 = new Form7(); Form7.Show();
this.Close(); }
else { MessageBox.Show("Benutzername oder Passwort falsch!"); } } else { MessageBox.Show("Benutzername oder Passwort falsch!"); } |
Austria88 - Do 14.04.11 13:40
Ja das Problem ist nur, wenn ich es jetzt so mach wie du und ein falsches Passwort eingebe, kommt 3 mal eine Fehlermeldung.
Lg Austria
m-s - Do 14.04.11 13:57
Welche Meldung kommt denn?
Austria88 - Do 14.04.11 15:00
OK ich hab mich falsch ausgedrückt.
Die Fehlermeldung "Benutzername nicht vorhanden oder Passwort falsch" erscheint dreimal.
Wenn ich nur die else Abfrage
C#-Quelltext
1: 2: 3: 4:
| else { MessageBox.Show("Benutzername oder Passwort falsch!"); } |
am Schluss lasse kommt sie zweimal.
Th69 - Do 14.04.11 15:06
Hallo ihr beiden,
es fehlt noch ein "Let's have a
break";
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| for(...) { if (row.Cells[1].Value.ToString().Equals(textBox1.Text)) { if(...) { } else { MessageBox.Show("Benutzername oder Passwort falsch!"); }
break; } } |
m-s - Do 14.04.11 17:06
Ah super, danke.
Austria88 - So 17.04.11 18:38
:D Dankeschööön.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!