0

こんなメッセージがありました

入力文字列は、正しい形式ではありませんでした

データベースに値を挿入するとき。私がチェックしたとき、私はDDLを持っていますが、そこから値を選択しなかったため、このメッセージが表示されましたが、データベースでこの列を作成してNULL値を許可しました。

protected void BT_submit_Click(object sender, ImageClickEventArgs e)
{
    string File = "~/CvFiles/" + FU_CV.FileName;
    if (FU_CV.FileBytes.Length > 4194304)
    {
        modalpopup.Show();
    }
    else
    {
        app.AddApplicant(txt_Mname.Text, Convert.ToInt32(DDL_Dept.SelectedValue));
    }
}

private void loadDepts()
{
    DDL_Dept.DataSource = d.GetAll();
    DDL_Dept.Items.Clear();
    DDL_Dept.AppendDataBoundItems = true;
    DDL_Dept.Items.Insert(0, new ListItem("-All-", "NULL"));
    DDL_Dept.DataValueField = "id";
    DDL_Dept.DataTextField = "name";
    DDL_Dept.DataBind();
}
 public bool AddApplicant(string MiddleName, int Dept_ID)
{

    SqlCommand cmd = new SqlCommand("SP_Insert_IntoApplicantforuser");
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@MiddleName", MiddleName);


    cmd.Parameters.AddWithValue("@Dept_ID", Dept_ID);


    System.Data.SqlClient.SqlParameter paramter1 = cmd.Parameters.Add("@AppID", SqlDbType.Int);
    paramter1.Direction = ParameterDirection.Output;

    bool rowaffected;
    rowaffected = DBHelper.Instance().Insert(cmd);
    if (rowaffected == false)
    {
        AppID = (int)paramter1.Value;

    }
    return rowaffected;


}
4

1 に答える 1

1

DDL_Dept.SelectedValue が の文字列表現であるかどうかを確認する必要がありますint。使用int.TryParse方法:

if (FU_CV.FileBytes.Length > 4194304)
{
    modalpopup.Show();
}
else
{
    int dept;
    if  (int.TryParse(DDL_Dept.SelectedValue, out dept))
        app.AddApplicant(txt_Mname.Text, dept);
    else 
        app.AddApplicant(txt_Mname.Text, -1); //or whatever there should be for you
}
于 2012-12-28T08:17:47.173 に答える