【发布时间】:2016-02-01 16:43:35
【问题描述】:
您好,我收到此错误:
"ObjectDataSource 'ObjectDataSource1' 找不到非泛型 具有参数的方法“UpdateEmployee”:originalEmployeeId, originalName, originalGender, originalCity, EmployeeId, 姓名, 性别, 城市。”
当我按下更新按钮时。但是我的删除按钮没有问题。这是我的代码:
WebForm1.aspx
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="ObjectDataSource1" DataKeyNames="EmployeeId">
<Columns>
<asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
<asp:BoundField DataField="EmployeeId" HeaderText="EmployeeId"
SortExpression="EmployeeId" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Gender" HeaderText="Gender"
SortExpression="Gender" />
<asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
</Columns>
</asp:GridView>
<br />
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetAllEmployee2S" TypeName="EditingData.Employee2"
UpdateMethod="UpdateEmployee" DeleteMethod="DeleteEmployee" ConflictDetection="CompareAllValues" OldValuesParameterFormatString="original{0}">
<DeleteParameters>
<asp:Parameter Name="originalEmployeeId" Type="Int32" />
<asp:Parameter Name="originalName" Type="String" />
<asp:Parameter Name="originalGender" Type="String" />
<asp:Parameter Name="originalCity" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="originalEmployeeId" Type="Int32" />
<asp:Parameter Name="originalName" Type="String" />
<asp:Parameter Name="originalGender" Type="String" />
<asp:Parameter Name="originalCity" Type="String" />
</UpdateParameters>
</asp:ObjectDataSource>
</div>
</form>
Employee2.cs
public static List<Employee2> GetAllEmployee2S()
{
var dal = new Employee2Dal();
return dal.GetAllEmployee2S();
}
public static void DeleteEmployee(int originalEmployeeId, string originalName, string originalGender, string originalCity)
{
var dal = new Employee2Dal();
dal.DeleteEmployee(originalEmployeeId, originalName, originalGender, originalCity);
}
public static void UpdateEmployee(int originalEmployeeId, string originalName, string originalGender, string originalCity)
{
var dal = new Employee2Dal();
dal.UpdateEmployee(originalEmployeeId, originalName, originalGender, originalCity);
}
Employee2Dal.cs
public void DeleteEmployee(int originalEmployeeId, string originalName, string originalGender, string originalCity)
{
var cs = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
using (var con = new SqlConnection(cs))
{
const string deleteQuery = "Delete from Employee2 where EmployeeId=@OriginalEmployeeId and Name = @OriginalName and Gender = @OriginalGender and " +
"City = @OriginalCity";
var cmd = new SqlCommand(deleteQuery, con);
cmd.Parameters.AddWithValue("@OriginalEmployeeId", originalEmployeeId);
cmd.Parameters.AddWithValue("@OriginalName", originalName);
cmd.Parameters.AddWithValue("@OriginalGender", originalGender);
cmd.Parameters.AddWithValue("@OriginalCity", originalCity);
con.Open();
cmd.ExecuteNonQuery();
}
}
public void UpdateEmployee(int employeeId, string name, string gender, string city)
{
var cs = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
using (var con = new SqlConnection(cs))
{
const string updateQuery = "Update Employee2 set Name=@Name, Gender=@Gender, City=@City where EmployeeId=@EmployeeId";
var cmd = new SqlCommand(updateQuery, con);
cmd.Parameters.AddWithValue("@EmployeeId", employeeId);
cmd.Parameters.AddWithValue("@Name", name);
cmd.Parameters.AddWithValue("@Gender", gender);
cmd.Parameters.AddWithValue("@City", city);
con.Open();
cmd.ExecuteNonQuery();
}
}
【问题讨论】:
-
抱歉编辑。我复制了你提出的建议,但仍然存在:'找不到具有参数的非泛型方法'UpdateEmployee':EmployeeId、Name、Gender、City、originalEmployeeId、originalName、originalGender、originalCity。为什么objectdatasource只需要4个参数,却要找8个参数,好像也在组合delete参数。
-
当我删除 ConfilictDetection 时,更新命令有效,但删除命令无效。这是否意味着我不能将 ConflictDetection 与 UpdateCommand 一起使用?