我有一个datagridview控件,其中有一列为“出生日期”,绑定到该控件上的数据表中有一列为日期时间型数据。注:“出生日期”是联合主键的成员之一。
我们知道sqlserver中只有datetime类型,默认的格式为yyyy-mm-dd hh:mm:ss.sss
那现在问题来了,我datagridview“出生日期”列中显示的数据全为:YYYY-MM-DD 0:00:00格式,我该怎么做才能使datagridview中显示格式为:YYYY-MM-DD?当然我也看了MSDN上的一些帮助,比较愚钝,还没悟出怎么使用。
这是adapter原来使用的select语句:
SELECT     Name, Gender, Nation, Birthday, IDNumber, VISAType, VISANum, Retention
FROM         PreCheckTable
WHERE     (ISDELETE IS NULL)
后来我把它改成这样:
SELECT     Name, Gender, Nation, CONVERT (char(10),Birthday,102) AS Birthday, IDNumber, VISAType, VISANum, Retention
FROM         PreCheckTable
WHERE     (ISDELETE IS NULL)
VS2005提示我:对于不返回任何键列信息的SelectCommand,不支持UpdateCommand的动态SQL生成。
我估计可能是select语句写的有问题,并没有把作为联合主键之一的Birthday字段读出来。大家帮忙看看。

解决方案 »

  1.   

    自定义格式:yyyy-MM-dd 
    注意,MM为大写。
      

  2.   

    试一下在datagridview的CellFormatting事件里private void dg1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
                if (e.ColumnIndex == 1) // 假设生日是在第1列(从零开始)
                {
                    e.Value = 你的格式化日期函数(e.Value.ToString());
                }
    }
      

  3.   

    convert.todatetime(你的数据).ToString("yyy-MM-dd")
      

  4.   

    /* 检查日期 */
    CalendarColumn coldtCheckDate = new CalendarColumn();
    coldtCheckDate.DataPropertyName = "dtCheckDate";
    coldtCheckDate.HeaderText = "检查日期";
    datagridview.Columns.Add(coldtCheckDate);
      

  5.   

    解决了,我在绘制事件里加入格式化处理。
    虽然得到了想要的结果,但是还是想要找到能够在源头上控制格式的方式。
    即:在从数据库读入到dataset中的时候就规定了格式。
    怎么做?
      

  6.   

    奇怪,我没有设置就是YYYY-MM-DD格式的……
      

  7.   

    SELECT     Name, Gender, Nation, Birthday, IDNumber, VISAType, VISANum, Retention
    FROM         PreCheckTable
    WHERE     (ISDELETE IS NULL)改为SELECT     Name, Gender, Nation, CONVERT (char(10),Birthday,23) AS Birthday, IDNumber, VISAType, VISANum, Retention
    FROM         PreCheckTable
    WHERE     (ISDELETE IS NULL)
    CONVERT (char(10),Birthday,23) 我也遇到过yyyy-mm-dd。呵呵。。
    参见
    http://blog.csdn.net/sycdirdircc/archive/2007/03/25/1540328.aspx
      

  8.   

    你在数据库的datatime 改成smalldatetime就OK了
      

  9.   

    你在数据库的datatime 改成smalldate就OK了