Hallo,
nach Stunden erfolglosen Suchens sehe ich vermutlich den Wald vor Bäumen nicht mehr.
Problem:
Ich habe mir eine Class Library (separates Projekt) gebaut, die ein Dataset enthält, welches ganz normal in VS 2008 per Drag and Drop erstellt wurde. Dieses Dataset (insbesondere die Tableadapter) ist getestet und funktioniert auch.
Nun möchte ich aus einer asp.net Anwendung (wieder separates Projekt aber in der gleichen Solution wie die DAL Libraray) über eine Objectdatasource und die Tableadapter auf die Daten zugreifen. Das klappt soweit auch, solange ich Selects mache. Bisher habe ich alles per Drag and Drop zusammengebaut (Objectdatasource konfiguriert, Gridview an Objectdatasource gebunden).
Wenn ich in der Gridview einen Wert editiere und anschliessend "Update" betätige, wird das Update des Tableadapters aufgerufen.
Das Problem ist nun, dass alle "Original_Values", die an die Update Funktion übergeben werden null sind. Somit kann der Tableadapter niemals wirklich updaten.
Das Updatecommand im Tabledapter sieht so aus:
Löst man die Parameter auf und setzt die übergebenen Werte in das automatisch generierte Updatecommand ein, ergibt sich ein Updatecommand in der Form
welches nie eine Zeile findet, da alle Original_Value null sind.
D.h., dass auch nie ein Update stattfindet.
Meine Frage ist nun: Wie kann es sein, dass in der Objectdatasource alle OriginalValues als null übergeben werden. Mache ich irgendetwas falsch ?
Danke für Hinweise oder Tipps.
Hermann
nach Stunden erfolglosen Suchens sehe ich vermutlich den Wald vor Bäumen nicht mehr.
Problem:
Ich habe mir eine Class Library (separates Projekt) gebaut, die ein Dataset enthält, welches ganz normal in VS 2008 per Drag and Drop erstellt wurde. Dieses Dataset (insbesondere die Tableadapter) ist getestet und funktioniert auch.
Nun möchte ich aus einer asp.net Anwendung (wieder separates Projekt aber in der gleichen Solution wie die DAL Libraray) über eine Objectdatasource und die Tableadapter auf die Daten zugreifen. Das klappt soweit auch, solange ich Selects mache. Bisher habe ich alles per Drag and Drop zusammengebaut (Objectdatasource konfiguriert, Gridview an Objectdatasource gebunden).
Wenn ich in der Gridview einen Wert editiere und anschliessend "Update" betätige, wird das Update des Tableadapters aufgerufen.
Code:
public virtual int Update(string ObjektBerichteAktionen_ID, string ObjektBerichte_ID, string Bezeichnung, global::System.Nullable<global::System.DateTime> Angelegt_Am, string Angelegt_Von, global::System.Nullable<global::System.DateTime> Geaendert_Am, string Geaendert_Von, string Original_ObjektBerichteAktionen_ID, string Original_ObjektBerichte_ID, string Original_Bezeichnung, global::System.Nullable<global::System.DateTime> Original_Angelegt_Am, string Original_Angelegt_Von, global::System.Nullable<global::System.DateTime> Original_Geaendert_Am, string Original_Geaendert_Von)
Das Updatecommand im Tabledapter sieht so aus:
Code:
UPDATE [Internet].[dbo].[ObjektBerichteAktionen] SET [ObjektBerichteAktionen_ID] = ?, [ObjektBerichte_ID] = ?, [Bezeichnung] = ?, [Angelegt_Am] = ?, [Angelegt_Von] = ?, [Geaendert_Am] = ?, [Geaendert_Von] = ? WHERE ( ([ObjektBerichteAktionen_ID] = ?) AND ((? = 1 AND [ObjektBerichte_ID] IS NULL) OR ([ObjektBerichte_ID] = ?)) AND ((? = 1 AND [Bezeichnung] IS NULL) OR ([Bezeichnung] = ?)) AND ((? = 1 AND [Angelegt_Am] IS NULL) OR ([Angelegt_Am] = ?)) AND ((? = 1 AND [Angelegt_Von] IS NULL) OR ([Angelegt_Von] = ?)) AND ((? = 1 AND [Geaendert_Am] IS NULL) OR ([Geaendert_Am] = ?)) AND ((? = 1 AND [Geaendert_Von] IS NULL) OR ([Geaendert_Von] = ?)))
Code:
UPDATE [Internet].[dbo].[ObjektBerichteAktionen] SET [ObjektBerichteAktionen_ID] = '85FCE4D5-EBE7-4A8C-B9AE-B85C0AA226BD', [ObjektBerichte_ID] = 1, [Bezeichnung] = 'Neue Bezeichnung', [Angelegt_Am] = null, [Angelegt_Von] = null, [Geaendert_Am] = null, [Geaendert_Von] = null WHERE ( ([ObjektBerichteAktionen_ID] = '85FCE4D5-EBE7-4A8C-B9AE-B85C0AA226BD') AND ((1 = 1 AND [ObjektBerichte_ID] IS NULL) OR ([ObjektBerichte_ID] = null)) AND ((1 = 1 AND [Bezeichnung] IS NULL) OR ([Bezeichnung] = null)) AND ((1 = 1 AND [Angelegt_Am] IS NULL) OR ([Angelegt_Am] = null)) AND ((1 = 1 AND [Angelegt_Von] IS NULL) OR ([Angelegt_Von] = null)) AND ((1 = 1 AND [Geaendert_Am] IS NULL) OR ([Geaendert_Am] = null)) AND ((1 = 1 AND [Geaendert_Von] IS NULL) OR ([Geaendert_Von] = null)) )
D.h., dass auch nie ein Update stattfindet.
Meine Frage ist nun: Wie kann es sein, dass in der Objectdatasource alle OriginalValues als null übergeben werden. Mache ich irgendetwas falsch ?
Danke für Hinweise oder Tipps.
Hermann
Comment