【发布时间】:2012-12-23 05:17:33
【问题描述】:
这是使用绑定到 ObjectDataSource 的 Gridview 控件时从 .net 返回的字符串。 ObjectDataSource 绑定到 .net DataSet 中的 tableAdapter。
数据集有一个自动生成的表适配器,并在我的数据库中创建了更新、插入、选择和删除存储过程。
网格现在正在使用这个源,应该允许插入、更新和删除。
插入和更新工作正常,但删除特别给出错误
ObjectDataSource“odsCustomerAliases”找不到具有以下参数的非泛型方法“Delete”:CustomerAlias、original_CustomerAlias。
虽然我可以阅读错误,但我已经尝试了很多方法,但无法使其正常工作。我真的看不出它是如何期待一个参数“original_CustomerAlias”
我可以确认这个参数在proc中不存在。
这里有一些似乎是正确的代码 sn-ps。
<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>
我认为设计师的最终代码 sn-p 实际上并不相关,但是...
<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
【问题讨论】:
-
你发现objectdatasource删除事件的参数有多少?
-
你有没有把 OldValuesParameterFormatString="original_{0}" 改成 OldValuesParameterFormatString="{0}"
标签: asp.net