【发布时间】:2018-06-14 07:24:18
【问题描述】:
我正在尝试将数据库中的值读取到占位符文本框中,但如果其中一列为空,则将无法将“System.DBNull”类型的对象转换为“System.String”类型。如果我删除具有 null 的文本框,那么即使它是数据库中的两个 ID 号,我也只会看到 1 个 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);
}
【问题讨论】:
-
要么在您的 SQL 中对值进行 ISNULL 检查以将 null 替换为空白,或者在将项目设置为 .Text 框之前将值设置为变量并对分配进行空检查有两个选择
-
null 问题的一部分,您的代码将 TextBox 的内容替换了 3 次,并将文本框保留为最终值。
-
@Steve;我应该怎么做才能防止这种情况发生
-
如果您想在同一个文本框中包含三个字段的值,那么您需要为最后两个字段编写 txt.Text += ....。