【发布时间】:2017-03-12 09:02:37
【问题描述】:
我在尝试从 gridview 更新数据时收到此错误:
System.InvalidOperationException: ObjectDataSource 'ObjectDataSource1' 找不到具有参数的非泛型方法“updateEmp”: id, name, u_name, pass, mail, address, city, dob, cnic, designation, ph_no、emp_name、emp_id。
这是我的对象数据源的 Asp 代码
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="deleteEmp" SelectMethod="GetAllEmployees" TypeName="fmsWeb.datagridDemo" UpdateMethod="updateEmp" ConflictDetection="OverwriteChanges">
<DeleteParameters>
<asp:Parameter Name="emp_id" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="id" Type="String" />
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="u_name" Type="String" />
<asp:Parameter Name="pass" Type="String" />
<asp:Parameter Name="mail" Type="String" />
<asp:Parameter Name="address" Type="String" />
<asp:Parameter Name="city" Type="String" />
<asp:Parameter Name="dob" Type="String" />
<asp:Parameter Name="cnic" Type="String" />
<asp:Parameter Name="designation" Type="String" />
<asp:Parameter Name="ph_no" Type="String" />
</UpdateParameters>
</asp:ObjectDataSource>
这是我定义方法的类代码
public static List<Employees> GetAllEmployees()
{
List<Employees> listemp = new List<Employees>();
using (MySqlConnection con = new MySqlConnection(@"server=127.0.0.1;user id=root;database=fms"))
{
MySqlCommand cmd = new MySqlCommand("Select * from emp", con);
con.Open();
MySqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Employees em = new Employees();
em.emp_id = dr[0].ToString();
em.emp_name = dr[1].ToString();
em.u_name = dr[2].ToString();
em.pass = dr[3].ToString();
em.mail = dr[4].ToString();
em.address = dr[5].ToString();
em.city = dr[6].ToString();
em.dob = dr[7].ToString();
em.cnic = dr[8].ToString();
em.designation = dr[9].ToString();
em.ph_no = dr[10].ToString();
listemp.Add(em);
}
}
return listemp;
}
public static void deleteEmp(String emp_id)
{
using (MySqlConnection con = new MySqlConnection(@"server=127.0.0.1;user id=root;database=fms"))
{
MySqlCommand cmd = new MySqlCommand("Delete from emp where emp_id=@empID", con);
MySqlParameter param = new MySqlParameter("empID", emp_id);
cmd.Parameters.Add(param);
con.Open();
cmd.ExecuteNonQuery();
}
}
public static string updateEmp(String id, String name, String u_name, String pass, String mail, String address, String city, String dob, String cnic, String designation,String ph_no)
{
using (MySqlConnection con = new MySqlConnection(@"server=127.0.0.1;user id=root;database=fms"))
{
MySqlCommand cmd = new MySqlCommand("UPDATE `emp` SET `emp_id`= @id,`emp_name`=@name,`u_name`=@u_name,`pass`=pass,`mail`=@mail,`address`=@address,`city`=@city,`dob`=@dob,`cnic`=@cnic,`designation`=@designation,`ph_no`=@ph_no WHERE emp_id=@id",con);
MySqlParameter paramID = new MySqlParameter("@id", id);
cmd.Parameters.Add(paramID);
MySqlParameter pname = new MySqlParameter("@name", name);
cmd.Parameters.Add(pname);
MySqlParameter pu_name = new MySqlParameter("@u_name", u_name);
cmd.Parameters.Add(pu_name);
MySqlParameter p_pass = new MySqlParameter("@pass", pass);
cmd.Parameters.Add(p_pass);
MySqlParameter pmail = new MySqlParameter("@mail", mail);
cmd.Parameters.Add(pmail);
MySqlParameter add = new MySqlParameter("@address", address);
cmd.Parameters.Add(add);
MySqlParameter pcity = new MySqlParameter("@city", city);
cmd.Parameters.Add(pcity);
MySqlParameter pdob = new MySqlParameter("@dob", dob);
cmd.Parameters.Add(pdob);
MySqlParameter pcnic = new MySqlParameter("@cnic", cnic);
cmd.Parameters.Add(pcnic);
MySqlParameter desig = new MySqlParameter("@designation", designation);
cmd.Parameters.Add(desig);
MySqlParameter ph = new MySqlParameter("@ph_no", ph_no);
cmd.Parameters.Add(ph);
con.Open();
int i=cmd.ExecuteNonQuery();
return Convert.ToString(i);
}
}
选择和删除方法运行良好,但更新时出现错误
【问题讨论】: