看到CSDN上有人问,如何实现多层表头的问题,将自己的办法拿出来,和大家讨论。要实现多层表头,人人都能想到的办法是:顶上放一个html的table,下面放一个DataGrid,但关键是table元素的单元格与DataGrid列的对齐问题,因为对于table元素即使为每一个单元格定制了宽度,单元格也会随其内容变宽,可以看下面的例子:
<table  border=1>
<tr>
<td width=100>1111</td>
<td>22222</td>
<tr>
<td  width=50>3333</td>
<td>4444</td>
<tr>
<td  width=50>55555</td>
<td>77777777777</td>
</tr>
</table>
如果将上面的<td width=100>1111111</td>改为<td width=100>1111111111111111111111</td>,单元格会跟着变宽,因此给顶上的table元素指定列宽行不通。
当然,也可以采用这种方式指定列宽<td><div class=css1>22222222222222222222222<div></td>
.css1
{}{
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    width:100px;
}
但缺点是DataGrid Render时也要加此样式。

我的办法很简单,具体是:
1、自己设计表头,就是设计table元素,有插入行、插入列、删除行列、合并行列等。表头存成xml或html的table格式。我是用服务器端代码写的,好像有js的,如swap或FreeTextBox,不知有没有合并、拆分单元格功能。
2、在表头下面放一个DataGrid,不过要重写这个DataGrid的render方法,去除其<table ......>部分,同时表头去除</table>。这样使表头table和DataGrid render后构成一个table元素。我写了一个自定义报表的工具就用了这种方法。

重写这个DataGrid的render方法:

实现简单多层表头的办法protected override void Render(HtmlTextWriter output)

最后发发牢骚,不要打压能力比自己强的人,不要因为自己能力不如别人就别人的坏话,也不要看不起能力不如自己的人。如果你是项目组的头,一定要将这样的人剔除出去,这样的人太浮躁,一般不能踏踏实实干活,老让别人帮助解决问题,最后却说是自己解决的。一个老鼠屎坏了一锅汤呀,如果项目组的头是这样的人,组员就倒霉了,所有功劳肯定都是这头的,这是需要更上层领导的处理,不过一般这样的人都和领导关系很好,因为这样的人很会......领导,特别是国有企业里。个人建议这样的人到政府去做官。

相关文章:

  • 2022-12-23
  • 2021-11-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
猜你喜欢
  • 2021-10-09
  • 2022-02-27
  • 2022-01-14
  • 2021-07-25
  • 2021-12-05
  • 2022-12-23
相关资源
相似解决方案