我不断收到称为System.FormatException的错误

时间:2019-09-12 17:39:46

标签: c# asp.net

我正在开发一个具有GridView的系统,该系统具有一个选择选项,可以通过其主键ID选择存储在特定行中的数据。

此代码在另一页上可以正常执行完全相同的功能

    protected void lnk_OnClick(object sender, EventArgs e)
    {
        int objectiveID = Convert.ToInt32((sender as LinkButton).CommandArgument);
        if (con.State == ConnectionState.Closed)
            con.Open();
        SqlDataAdapter sqlDa = new SqlDataAdapter("objectiveViewByID", con);
        sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
        sqlDa.SelectCommand.Parameters.AddWithValue("@objectiveID", objectiveID);
        DataTable dtbl = new DataTable();
        sqlDa.Fill(dtbl);
        con.Close();
        hfobjectiveID.Value = objectiveID.ToString();
        txtAudience.Text = dtbl.Rows[0]["audience"].ToString();
        txtCondition.Text = dtbl.Rows[0]["condition"].ToString();
        txtBloom.Text = dtbl.Rows[0]["bloom_level"].ToString();
        txtVerb.Text = dtbl.Rows[0]["verb"].ToString();
        txtProduct.Text = dtbl.Rows[0]["product"].ToString();
        btnSave.Text = "Update";
        btnDelete.Enabled = true;
    }

我希望代码能重新填充用于填充数据库的输入字段。

1 个答案:

答案 0 :(得分:0)

理论上,这是格式异常,如果ToInt32方法的输入为某个非数字值,则可能会在此处产生错误。

int objectiveID = Convert.ToInt32((sender as LinkButton).CommandArgument);

如果值(例如dtbl.Rows [0] [“ audience”]为空),则其他可能的区域是以下代码。 但这将是一个不同的例外。您可以在顶部放置一个断点,看看哪条线崩溃了。

hfobjectiveID.Value = objectiveID.ToString();
txtAudience.Text = dtbl.Rows[0]["audience"].ToString();
txtCondition.Text = dtbl.Rows[0]["condition"].ToString();
txtBloom.Text = dtbl.Rows[0]["bloom_level"].ToString();
txtVerb.Text = dtbl.Rows[0]["verb"].ToString();
txtProduct.Text = dtbl.Rows[0]["product"].ToString();