根据DataGrid的经验,在样式表中定义好样式,然后指定表头、行、间隔行的CssClass,一般都能得到想要的效果。后来,GridView接替DataGrid后,如法炮制,发现总是有些不听使唤的地方,就通过设置字段属性的方法解决,一直也没有深究。今天,这个问题又开始困扰我,正好这几天自己的兴致盎然,比较喜欢对细节进行探索,果然是功夫不负有心人。
原来,GridView在生成html的时候,表头对应的是th标记,行当然对应的是td标记。对于th来说,默认的样式是居中粗体,对于td来说,默认样式是居左正常。即使你定义并在HeaderStyle中应用了样式:text-align:left;,表头依然是居中显示。这是因为生成时html时该样式是被应用在tr上的,类似:<tr class='gridhead'><th></th></tr>,所以,你这样应用的表头样式是无法生效的。
如果你在样式表中定义了:tr{text-align:left},可以让表头靠左显示,但某些列如果想居中显示时,定义HorizontalAlign="center"是无效的。
搞清了问题的原因,实际应用时就可根据具体情况来灵活掌握了。比如想要改变表头的默认显示靠左,则可在样式表中定义th{text-align:left;},如果有个别列需要居中显示,则可定义一个类比如.mycenter{text-algin:center;},在需要控制的列标记内设置<HeaerStyel>。如图:
请注意,黑色标记那里应用的gridhead样式生成html后是加在<tr>标记上的,绿色标记那里的才能起作用。