让DataGrid的列按指定时间日期的格式输出和排序

今日遇到这样一个小问题: 想让DataGrid 的某列只显示日期格式,如2006-1-1,但该列又需点击表头时按时间格式排序(DataGrid内置那种),一开始我的两个方法不能两全.

(1)让DataGrid AutoGenerateColumns=True, 从DataTable中自动生成了改列,DateType为DateTime按时间排序是没问题了,但日期显示是2006-1-1 0:00:00
(2)让DataGrid AutoGenerateColumns=False, 手工添加BoundColumn到DataGrid,控制格式DataFormatString为{0:d}.日期格式好了,但点击表头排序居然不起作用?

后来搞了一小会儿,发现自己真是弱智,试验出如下两种解决方法:
(3)让DataGrid AutoGenerateColumns=True, 但用一个中间DataTable来让本来为DateTime类型的列变为string类型,并把该行内容改为ToString("yyyy-MM-dd")来显示具有前导0的时间字符串.这样排序的问题自然也就解决了.
(4)找到了上面(2)行不通的原因,因为我是动态添加的列,点击表头排序postback的时候居然没有再次执行添加列的代码,这样ViewState自然无法给我排序了.

相比之下,我选了(3),因为不用自己添加列呵呵,我比较懒,而且我的数据访问本来就有一个另外的需求需要一个中间DataTable.

你可能感兴趣的:(datagrid)