2009-08-25 2 views
0

Ich habe ein Geschäftsobjekt, das ich verwendet habe, das eine Reihe von Eigenschaften und eine Save-Methode hat, die die Datenbank einfügt/aktualisiert. Die Speichermethode ist NICHT der Status, daher muss das Objekt instanziiert werden, und die Eigenschaften für die DB-Aktualisierung/-Einfügung werden aus dem Objekt abgerufen.Muss ich Parameter mit einem ObjectDataSource-Update verwenden?

Jetzt versuche ich, das Objekt an ein FormView mit der ObjectDataSource zu binden. Ich habe es funktioniert so instanziiert es basierend auf dem QueryString-Parameter, kein Problem, und füllt die Textfelder gut. Die UpdateMethod habe ich auf die Speichern-Funktion eingestellt. Jetzt bleibt es hängen.

Es scheint, dass die ObjectDataSource eine Methode mit allen Feldern/Eigenschaften/Textboxen als Parameter benötigt. Ich hätte gedacht, dass es die Eigenschaften des Objekts aktualisieren würde und dann die Funktion zum Speichern ohne Parameter aufrufen würde. Ist das Wunschdenken?

Muss ich jetzt meine Save-Funktion ändern, um Parameter einzuschließen und alle Instanzen zu ändern, in denen sie sich gerade an diese neue Methode gewöhnt?

Dank Sean

Antwort

1

Unfortunatly erfordert es params.

Ich habe meine Insert/Update-Methoden überladen, um ein paar Parameter einzuschließen. Hängen Sie die ObjectDataSource an die Methode mit Parametern an.

Die überladene Update-Methode ruft die ursprüngliche Aktualisierungsmethode auf und speichert alle Daten. Scheint irgendwie hackisch, aber es funktioniert.

 Public Sub Update() 
     Dim isUpdated As Boolean = False 

     sql = "UPDATE AudioFiles SET Title = @Title, [desc] = @desc, Active = @Active WHERE fileID = @fileID" 
     conn = New SqlConnection(connString) 
     conn.Open() 

     ... 

    End Sub 

    Public Sub Update(ByVal upFileID As Integer, ByVal upTitle As String, ByVal upDesc As String, ByVal upActive As Boolean) 
     Dim isUpdated As Boolean = False 
     Dim audioFile As New AudioFiles(fileID) 

     If Len(upTitle) > 0 Then 
      _title = title 
     End If 

     ... 

     audioFile.Update() 

    End Sub