Databinding
-
Setze mal ne BindingSource dazwischen (und noch ein BindingNavigator dazu, damit Du navigieren kannst.)
-
Knuddlbaer schrieb:
Setze mal ne BindingSource dazwischen (und noch ein BindingNavigator dazu, damit Du navigieren kannst.)
Die hat er doch schon drin. Kannst Du mal versuchen:
- eine Datagridview zu nehmen, ob die Daten darstellt, (dort die bindingSource in DataSource angeben)
- nicht nur eine, sondern mehrere Rows zu laden und dann mit dem BindingNavigator durchlaufen, ob er sich beim Laden der ersten Row sich 'verschluckt'
-
Kannst Du weiterhin mal prüfen:
- ist _myDataSet in beiden Sourcecodeabschnitten wirklich dasselbe Objekt? Hat der Designer das angelegt?
- BindingSource::ResetBindings() mal probieren.
-
Also ich habe den generierten Code von
textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this._myDataSet, "myTable.MY_FIELD", true));
nach
textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this._myDataSet.myTable[0], "MY_FIELD", true));
nachgebessert und jetzt funktioniert es. Aber es kann doch nicht sein, daß man bei einer solchen eine Datenanbindung, wenn sie auch automatisch vom VS-Studio unterstützt wird, selbst coden muß.
Kann der Studio-Designer hierfür keinen automatischen Code erzeugen :?
-
Eigentlich schon, jedenfalls hatte ich mit Bindings erstellt durch "Zusammenklickern" noch keine Probleme.
-
Wenn man ein Control an eine Tabellen(!)palte(!) bindet, so wie es im Designer ja geschieht, ist der generierte Code ja erwartungsgemäß.
Ich will ja die erste Row der Spalte an das Control binden! Gibt es hierfür keinen Automatismus über den Designer?
-
Nein, warum sollte es das auch ?
-
Knuddlbaer schrieb:
Nein, warum sollte es das auch ?
... weil es gängige Art einer Codemusetzung ist.
-
Wenn man ein Element an eine Datenbank anbindet, wie Warscheinlich ist es, das man den ersten Datensatz - und nichts als den ersten Datensatz anzeigen möchte ?
Das gewünschte Ergebnis kann doch über einen kleinen Umweg des BindingSource erreicht werden. Den kann man dann auf ein beliebigen Datensatz springen lassen. Lässt man den Navigator weg, ist die Vorgabe fix.
Oder anders ausgedrückt:
Es interessiert mich warum es eine übliche Codeumsetzung ist eine Datenbank zu verwenden wenn ich nur den ersten Datensatz anzeigen möchte. Das ist jetzt nicht böse, als Flame oder sonst was gemeint sondern als ehrliche Frage aus Interesse.
-
_myDataSet = new MyDataSet(); // typisierter Dataset SqlConnection connection = new SqlConnection("MyConnectionString"); connection.Open(); using(SqlCommand cmd = new SqlCommand("select * from myTable where table_id = 1", connection)) { SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = cmd; adapter.Fill(_myDataSet, "myTable"); // eine row ist geladen }
Der Designer ist schon in Ordnung. Nicht in Ordnung aber ist die erste Zeile Deines Codes. Kommentier sie doch mal spaßhalber aus...