我试图将数据库中的值读入占位符文本框但是如果其中一列为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);
}
答案 0 :(得分:0)
您需要先检查值是否为null。在设置文本框的文本值时尝试此操作:
txt.Text = myReader["ID1"] == DBNull.Value ? "" : myReader["ID1"].ToString();
如果它为空,那么它只会用空字符串填充它。
作为旁注,您要设置相同的文本框的文本值。因此,最终结果将始终是ID3出现的任何内容。如果要附加它,请使用" + ="而不是" ="。