用空格替换表中的空值

时间:2015-03-17 14:56:15

标签: c# webforms

我们有一个SQL表,其成本列包含几个NULL条目。

因此,在将此表绑定到网格视图之前,我想用空格替换它。

foreach (DataRow row in ds.Tables[0].Rows)
{
 if (row["AverageCost"] is System.DBNull)
 {
   row["AverageCost"] = Convert.ToDecimal("0.00"); // works
   row["AverageCost"] = " "; // doesnt work
   row["AverageCost"] = Convert.ToDecimal(" "); // doesnt work
 }
}

我想让网格包含空字符串而不是0.00。

请建议。

3 个答案:

答案 0 :(得分:2)

解决这个问题的唯一方法是确保您的列例如VarCharNVarChar。文本字段,而不是您目前拥有的数字。修改列类型后,您就可以分配space

但是,您尝试替换的null就是针对这种情况而设计的:

  • 有效数值(例如:5.00)
  • 有效数值(例如:0.00)

这两个实例实际上表示该值通过用户存在,其中包含一个有用的表示形式。第三种选择:

  • Null

这实际上表明用户没有修改所述值,这是一个指示器。从本质上讲,它是控制该领域状态的可行选择。如果您有文本字段,那么您将拥有:

  • 有效价值(" 5.00")
  • 有效值(""或与数字0.00比较)
  • null

所以问题是,为什么空间比null0.00更适合?在大多数情况下,它将正确符合您的标准。

否则,要执行所述更改,您需要:

example.Tables[0].Columns.Add("...", typeof(string));
foreach(var row in example.Tables[0].Rows)
{
     if(row["AverageCost"] != DBNull.Value)
          row["AverageCostText"] = row["AverageCost"].ToString();
      else { row["AverageCostText"] = String.Empty; }
}

这样可以确保在文本字段中放置正确的值,但显然缺点是你需要一个小数,你总是需要解析它。希望这能为你澄清。

答案 1 :(得分:1)

从您的示例中,似乎AverageCost列是十进制字段。您无法将其分配到"空间"。

但是,您可以添加一个新列,其中包含AverageCost的文本表示...

ds.Tables[0].Columns.Add("AverageCostText", typeof(String));
foreach (DataRow row in ds.Tables[0].Rows)
{
     row["AverageCostText"] = (row["AverageCost"] == DBNull.Value) ? string.Empty : string.Format("{0}", row["AverageCost"]);
}

答案 2 :(得分:0)

您无法将空白字符(类型char)分配给decimal类型的列。分配0而不是空格可能很有用。