DataTable中是用SQL语句检索出来的记录集,现在我想判断其中NS列中的数据是否有为NULL的值,如果为NULL,那么替换为空,请问该如何操作?该列是datetime类型,在用户不赋值的情况下,它在DataGrid中的显示要么为(NULL),要么为“1900-01-01”,可是这不符合我的要求,想让它显示为空,能做得到吗?

解决方案 »

  1.   

    你上个帖子没说清楚啊
    你应该在DataGrid的绑定的时候去格式化你这个列
      

  2.   

    这个就不能直接改了dt.Columns.Add("ns2");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["ns"] == DBNull.Value)
                {
                    dt.Rows[i]["ns2"] = "";
                }
                else
                {
                    dt.Rows[i]["ns2"] = dt.Rows[i]["ns"].ToString();
                }
            }
    绑ns2
      

  3.   

    参考一下这个吧
    http://dev.csdn.net/develop/article/20/20307.shtm你可以在ItemDataBound事件中
    或者直接在ASPX中调用.cs的方法如果你像楼上说的那样
    还要判断下是否是1900
      

  4.   

    sprc_lcl :试过了您的方法,好用是好用,但是有一个问题,那就是NS这个列在datagrid中的出现显示是有顺序的,按您的方法,它还是出现在原位置,NS2列出现在了最后一排,怎么样能让NS2列替换NS列出现?
      

  5.   

    sprc_lcl :试过了您的方法,好用是好用,但是有一个问题,那就是NS这个列在datagrid中的出现显示是有顺序的,按您的方法,它还是出现在原位置,NS2列出现在了最后一排,怎么样能让NS2列替换NS列出现?
      

  6.   

    因为dataGrid 没有像GridView 的 NullDisplayText 属性
    so :---事件 下的 操作
    if(e.row.cell["columIndex"].Text=="1940-01-01")
    {
       e.row.cell["columIndex"].Text="";
    }
      

  7.   


            dt.Columns["ns2"].SetOrdinal(dt.Columns["ns"].Ordinal);
            dt.Columns.Remove("ns");试试
      

  8.   


    不可访问“System.Data.DataColumn.SetOrdinal(int)”,因为它受保护级别限制为什么会有错误呢?
      

  9.   

    是否可以用SQL语句解决 写一个case...when...then
    小弟菜鸟不知道可不可以
      

  10.   

    可以用SQL语句取值的时候 转换一下
    select (case when CONVERT(varchar(12),列名,111) is null then '' 
           when CONVERT(varchar(12),列名,111)='1900/01/01' then '' 
           else CONVERT(varchar(12),列名,111) end)
    from ...
      

  11.   

    DataTable dt2 = dt.Clone();
            dt2.Columns["accountname"].DataType = Type.GetType("System.String");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt2.NewRow();
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    if (dt.Columns[j].ColumnName == "ns")
                    {
                        dr[j] = dt.Rows[i][j].ToString();
                    }
                    else
                    {
                        dr[j] = dt.Rows[i][j];
                    }
                }
                dt2.Rows.Add(dr);
            }
            dt.Dispose();绑dt2
    可用性很低
      

  12.   

    dt2.Columns["accountname"]=================>dt2.Columns["ns"].
      

  13.   

        if (ds.Tables[0].Rows.Count > 0 && ds.Tables[0].Rows[0][0].ToString() != "")
                {
                   // tm = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
                    tm =(DateTime) ds.Tables[0].Rows[0][0];
                }
      else
    {  DateTime tm = DateTime.Parse("");////或者任意时间,例如:DateTime tm = DateTime.Parse("2008-12-27");
    }
      

  14.   


    您的方法好用,但是显示的日期格式是YYYY/MM/DD,怎么样能让它变成YYYY-MM-DD呢?