从数据库读取占位符文本框不起作用Asp.net

时间:2018-06-13 19:55:58

标签: c# asp.net

我试图将数据库中的值读入占位符文本框但是如果其中一列为null,则抛出Unable来转换类型为' System.DBNull'的对象。输入' System.String'。如果我删除了null的文本框,那么我只看到1个ID,即使它是数据库中的两个ID号

SqlDataReader myReader = null;

    SqlCommand command = new SqlCommand("sp_selectUser", objConnection);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.AddWithValue("@userNum", txtuserNum.Text);


    myReader = command.ExecuteReader();
    int i = 0;
    while (myReader.Read())
    {


        TextBox txt = new TextBox();

        txt.Text = (string)myReader["ID1"];
        txt.Text = (string)myReader["ID2"];
        txt.Text = (string)myReader["ID3"];

        ContentPlaceHolder1.Controls.Add(txt);
        ContentPlaceHolder1.Controls.Add(new 

LiteralControl("     "));
            ControlCache.Add(txt);
}

1 个答案:

答案 0 :(得分:0)

您需要先检查值是否为null。在设置文本框的文本值时尝试此操作:

txt.Text = myReader["ID1"] == DBNull.Value ? "" : myReader["ID1"].ToString();

如果它为空,那么它只会用空字符串填充它。

作为旁注,您要设置相同的文本框的文本值。因此,最终结果将始终是ID3出现的任何内容。如果要附加它,请使用" + ="而不是" ="。