这是在使用绑定到ObjectDataSource的Gridview控件时从.net返回的字符串。ObjectDataSource绑定到.net数据集中的tableAdapter。
数据集有一个自动生成的表适配器,它在我的数据库中创建了一个update、insert、select和delete存储过程。
网格现在正在使用此源,应允许插入、更新和删除。
ObjectDataSource“odscustomeralases”找不到具有以下参数的非泛型方法“Delete”:CustomerAlias、original_CustomerAlias。
虽然我能读懂错误,但我已经尝试了很多事情,无法让它起作用。我真的看不出它是如何期望参数“original_CustomerAlias”
下面是一些似乎是正确的代码片段。
<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>
来自自动生成的数据集的节。
<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>
<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