从对象类型System.Web.UI.WebControls.ListItem到已知的托管提供程序本机类型不存在映射

时间:2011-08-17 15:46:34

标签: asp.net

protected void btnsubmit_Click(object sender, EventArgs e)
    {
        if (rbtmale.Checked)
        {
            gender = "male";
        }
        else if(rbtfemale.Checked)
        {
            gender = "female";
        }
        if (cbxsd.Checked)
        {
            designation = "sd";
        }
        else if (cbxasd.Checked)
        {
            designation = "asd";
        }
        else if (cbxtrainee.Checked)
        {
            designation = "trainee";
        }
        if (cbxbsc.Checked)
        {
            qua = "BSc";
        }
        else if (cbxbca.Checked)
        {
            qua = "BCA";
        }
        else if (cbxbtech.Checked)
        {
            qua = "BTech";
        }
        else if (cbxmca.Checked)
        {
            qua = "MCA";
        }
        else if (cbxmba.Checked)
        {
            qua = "MBA";
        }



        SqlConnection con = new SqlConnection(s1);
        SqlCommand cmd = new SqlCommand("sp_2", con);
        cmd.CommandType = CommandType.StoredProcedure;
        con.Open();
        cmd.Parameters.AddWithValue("@id", txtid.Text.Trim());
        cmd.Parameters.AddWithValue("@name",txtname.Text.Trim());
        cmd.Parameters.AddWithValue("@age",txtage.Text.Trim());
        cmd.Parameters.AddWithValue("@sex",gender);
        cmd.Parameters.AddWithValue("@addr",txtaddr.Text.Trim());
        cmd.Parameters.AddWithValue("@hq",qua);
        cmd.Parameters.AddWithValue("@company",ddlcompany.SelectedItem);
        cmd.Parameters.AddWithValue("@desig",designation);
        cmd.Parameters.AddWithValue("@mob",txtmob.Text.Trim());
        cmd.Parameters.AddWithValue("@email", txtemail.Text.Trim());
        cmd.Parameters.Add("@msg", SqlDbType.VarChar, 20).Direction = ParameterDirection.Output;
        cmd.ExecuteNonQuery();
        //if (i > 0)
        //{
        //    Label1.Text = "successfully inserted";
        //}
        //else
        //{
        //    Label1.Text = "failed to insert";
        //}
        string s2 = cmd.Parameters["@msg"].Value.ToString();
        Response.Write(s2);
        con.Close();
    }

2 个答案:

答案 0 :(得分:9)

我想我看到了问题:

cmd.Parameters.AddWithValue("@company",ddlcompany.SelectedItem);

应为ddlcompany.SelectedIndexddlcompany.SelectedValue ...

ddlcompany.SelectedItem引用ListItem本身,而不是值。

答案 1 :(得分:5)

只需更改以下代码行

即可
cmd.Parameters.AddWithValue("@company",ddlcompany.SelectedItem);

cmd.Parameters.AddWithValue("@company",ddlcompany.SelectedItem.ToString());

它将起作用,因为SelectedItem需要以字符串类型转换