Das ist ein String, der von .net zurückgegeben wird, wenn ein Gridview-Steuerelement verwendet wird, das an eine ObjectDataSource gebunden ist. Die ObjectDataSource ist an einen TableAdapter in einem .net DataSet gebunden.konnte eine nicht generische Methode 'Delete' mit Parametern nicht finden
Das Dataset verfügt über einen Tabellenadapter, der automatisch generiert wird und ein aktualisiertes, eingefügtes, ausgewähltes und gelöschtes Proc in meiner Datenbank erstellt hat.
Das Grid verwendet jetzt diese Quelle und sollte Einfügen, Aktualisieren und Löschen zulassen.
Einfügen und Updates funktionieren, aber das Löschen gibt speziell den Fehler
Object ‚odsCustomerAliases‘ konnte keine nicht-generische Methode ‚Löschen‘ finden, die Parameter: CustomerAlias, original_CustomerAlias.
Während ich den Fehler lesen kann habe ich eine Reihe von Dingen ausprobiert und kann dies nicht funktionieren. Ich kann nicht wirklich sehen, wie es einen Parameter 'original_CustomerAlias' erwartet
Ich kann bestätigen, dass dieser Parameter nicht in der Proc existiert.
Hier sind einige Code-Schnipsel, die korrekt zu sein scheinen.
<asp:ObjectDataSource ID="odsCustomerAliases" runat="server" DeleteMethod="Delete"
InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
TypeName="SLRDataAccess.dsTableAdapters.CustomerAliasesTableAdapter" UpdateMethod="Update">
<DeleteParameters>
<asp:Parameter Name="CustomerAlias" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="original_CustomerAlias" Type="String" />
<asp:Parameter Name="CustomerAlias" Type="String" />
</UpdateParameters>
<SelectParameters>
<asp:SessionParameter Name="CustomerID" SessionField="CustomerID" Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="CustomerAlias" Type="String" />
<asp:Parameter Name="CustomerID" Type="Int32" />
</InsertParameters>
</asp:ObjectDataSource>
Der Abschnitt aus dem automatisch generierten Dataset.
<DeleteCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="False">
<CommandText>dbo.usp_DeleteCustomerAlias</CommandText>
<Parameters>
<Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="False" SourceVersion="Current">
</Parameter>
<Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@CustomerAlias" Precision="0" ProviderType="VarChar" Scale="0" Size="100" SourceColumn="CustomerAlias" SourceColumnNullMapping="False" SourceVersion="Current">
</Parameter>
</Parameters>
</DbCommand>
</DeleteCommand>
Der letzte Code-Schnipsel aus dem Designer, die ich mir vorstellen, ist nicht wirklich relevant, aber ...
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _
Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.Delete, true)> _
Public Overloads Overridable Function Delete(ByVal CustomerAlias As String) As Integer
If (CustomerAlias Is Nothing) Then
Me.Adapter.DeleteCommand.Parameters(1).Value = Global.System.DBNull.Value
Else
Me.Adapter.DeleteCommand.Parameters(1).Value = CType(CustomerAlias,String)
End If
Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State
If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _
<> Global.System.Data.ConnectionState.Open) Then
Me.Adapter.DeleteCommand.Connection.Open
End If
Try
Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery
Return returnValue
Finally
If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then
Me.Adapter.DeleteCommand.Connection.Close
End If
End Try
End Function
Wie viele Argumente haben Sie gefunden objectdatasource löschende Ereignis? –
haben Sie OldValuesParameterFormatString = "original_ {0}" in OldValuesParameterFormatString = "{0}" geändert –