日期:2014-05-19  浏览次数:20739 次

50分求解datagridview显示日期问题。
我有一个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字段读出来。

大家帮忙看看。

------解决方案--------------------
顶一下
------解决方案--------------------
你数据库里的记录是用户输入的,又不是要系统的时间,在接受用户输入的时间你控制一下不就行了吗?

------解决方案--------------------
自定义格式:yyyy-MM-dd
注意,MM为大写。
------解决方案--------------------
DateTime.ToShortDate()
------解决方案--------------------
up
------解决方案--------------------
.ToString( "yyy-MM-dd ")

------解决方案--------------------
试一下在datagridview的CellFormatting事件里

private void dg1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1) // 假设生日是在第1列(从零开始)
{
e.Value = 你的格式化日期函数(e.Value.ToString());
}
}
------解决方案--------------------
yyyy-MM-dd HH:mm:ss
------解决方案--------------------
convert.todatetime(你的数据).ToString( "yyy-MM-dd ")
------解决方案--------------------
/* 检查日期 */
CalendarColumn coldtCheckDate = new CalendarColumn();
coldtCheckDate.DataPropertyName = "dtCheckDate ";
coldtCheckDate.HeaderText = "检查日期 ";
datagridview.Columns.Add(coldtCheckDate);
------解决方案--------------------
奇怪,我没有设置就是YYYY-MM-DD格式的……
------解决方案--------------------
DateTime.ToShortDate()
------解决方案--------------------
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