0

在我的 SQL Server 表中,如果列值(整数)什么都不是,那么它的插入值为 -1。如果我从表中选择所有列值并显示在 ASP.net 网格上,它会在指定列上显示-1。我不想将其显示为 -1 它需要显示为“null or none”之类的东西。怎么能得到这个?

4

4 回答 4

0

不要调用事件并避免不必要的回发到服务器,而是在从数据库中获取 DataTable 之后以及在 Databind() GridView 之前编写以下代码。

protected void Page_Load(object sender, EventArgs e)
{
    //DataTable dt = GetDataFromDatabase();
    DataTable dt = new DataTable();
    foreach (DataRow row in dt.Rows)
    {
        row["columnName"] = row["columnName"]== "-1" ? "none" : row["columnName"];
    }
}
于 2012-09-27T18:57:12.827 回答
0

使该列可以为空,并且不要为该列设置默认值,并在 asp.net 页面中检查是否有空值,然后将其替换为银行或“无”

于 2012-09-26T17:39:35.300 回答
0

因此,无论是在您的更新声明中,还是在您正在使用的驱动程序中,'' 都不会被错误处理。如果你想要 NULL,你必须插入 NULL。

  • 插入 (mytable ID, SomeNum, SomeText) 值 (1,'','hello World') 不
  • 插入 (mytable ID, SomeNum, SomeText) 值 (1,,'hello World') 不
  • 插入(mytable ID,SomeNum,SomeText)值(1,NULL,'hello World')是的。

都会在 someNum 中产生不同的值。第一个可能会引发类型转换,第二个我相信结果是-1,第三个会给你你正在寻找的结果。

如果您使用的是存储过程,则传入的参数没有得到适当的处理。

于 2012-09-26T17:40:11.043 回答
0

1 您可以在数据库中插入 null。(在您的数据中,您使用 Type Nullable 来匹配)

2 您还可以通过删除 -1 并替换为空值来处理 Gridview 中的信息。

 void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {

    if(e.Row.RowType == DataControlRowType.DataRow)
    {

      e.Row.Cells[1].Text = (e.Row.Cells[1].Text == "-1" ) ? "" :  e.Row.Cells[1].Text;

    }

  }
于 2012-09-26T17:41:41.713 回答