WebUI中 DataGrid多层表头 的终极解决办法
因为DataGrid控件的简单易懂,大多数做.NET程序员都喜欢用,有需要把数据显示成表格样式的地方DataGrid会是首选,但是所有的东西都会有好和不好的一面,DataGrid在给我们带来了数据显示方便的同时,也给我们带来了不灵活的问题,多层表头就是例子。 相信大家都遇到过这样的需求:
|
Head1
|
Head2
|
Head3
|
Head4
|
|
|
SubTitle1
|
SubTitle2
|
|||
我在网上Google和Baidu了一下,发现大家都是在DataGrid的ItemCreated和ItemDataBind事件中来实现的(实现的方法太多,这里就不用列举了),我觉得这样做效率不高而且麻烦,因为需要在系统中每个用到DataGrid的地方都需要添加那样的实现代码。所以我想可以通过重写DataGrid的Render方法来实现多层表头的显示,代码如下:
-Index_Head);
//将默认的表格头替换成我们想要的表格头HTML
StrToRender = Tem_Str.Replace(OldHeadHTML,this.HeadHTML);
}
//将新的结果输出到writer
writer.Write(StrToRender);
}
}
}在有需要使用多层表头的地方使用这个自定义的DataGrid,只需要在DreamWeaver里面设计好一个表头,然后把CustomDatagrid的HeadHTML属性设置为在DreamWeaver中生成的HTML即可。
比如你在DreamWeaver中得到的表头HTML是:
<TABLE>
<TR>
<TD rowspan="2"><div align="center"></div>
<div align="center">Head1</div></TD>
<TD rowspan="2"><div align="center"></div>
<div align="center">Head2</div></TD>
<TD colspan="2"><div align="center">Head3</div></TD>
<TD rowspan="2"><div align="center"></div>
<div align="center">Head4</div></TD>
</TR>
<TR>
<TD><div align="center">SubTitle1</div></TD>
<TD><div align="center">SubTitle2</div></TD>
</TR>
</TABLE>那么你只需把下面这段字符串赋值给CustomDataGrid的HeadHTML:
<TR>
<TD rowspan="2"><div align="center"></div>
<div align="center">Head1</div></TD>
<TD rowspan="2"><div align="center"></div>
<div align="center">Head2</div></TD>
<TD colspan="2"><div align="center">Head3</div></TD>
<TD rowspan="2"><div align="center"></div>
<div align="center">Head4</div></TD>
</TR>
<TR>
<TD><div align="center">SubTitle1</div></TD>
<TD><div align="center">SubTitle2</div></TD>
</TR>值得注意的是这里没有包括表格开始标签<Table>和表格结束标签</Table>,这取决于重写DataGrid的Render方法的方式,这里的重写方式不需要这两个标签。
好了,现在不管在设计试图和还是在运行页面都可以看到多层表头的样子了。
//***************************************
StartIndex 不能小于 0。参数名: startIndex 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 行 41: int Index_Head = Tem_Str.IndexOf("<tr>"); 行 42: int Index_Last = Tem_Str.IndexOf("</tr>"); 行 43: string OldHeadHTML = Tem_Str.Substring(Index_Head,Index_Last+5-Index_Head);
***--
改為int Index_Head = Tem_Str.IndexOf("<tr就可以了
示例:http://files.cnblogs.com/ewyb/WebApplication3.zip
来源:http://www.cnblogs.com/Fooo/archive/2009/05/22/1486880.html
WebUI中 DataGrid多层表头 的终极解决办法的更多相关文章
- 响应式框架中,table表头自动换行的解决办法
最近在用bootstrap开发网站,在处理一张table的时候发现,通过PC端查看样式正常,在手机上查看时,因为屏幕小,表格被压缩的厉害,表头和数据变形如下图 后来网上找了一下,发现一个好用的CSS属 ...
- Genymotion模拟器环境搭建中的各种坑,终极解决办法
最近刚进入了一家公司,因为要做自动化测试,web端的业务需要移动端来进行配合,想了想还是利用genymotion模拟器吧:很久前装过,那也是一路坎坷啊,结果这次还是遇到坑了,搞了老半天:我希望我踩过的 ...
- XP系统中IIS访问无法显示网页,目前访问网站的用户过多。终极解决办法
无法显示网页 目前访问网站的用户过多. -------------------------------------------------------------------------------- ...
- win8和win7下解决php5.3和5.4、5.5等不能加载php_curl.dll的终极解决办法 收藏
win8和win7下解决php5.3和5.4.5.5等不能加载php_curl.dll的终极解决办法 收藏2015年01月11日 最近分别在WIN7和Windows8 上分别安装php 高版本!都遇到 ...
- ecshop验证码图片无法显示终极解决办法
ecshop验证码图片无法显示终极解决办法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2014-06-06 客户在安装好ecshop之后所有前台的证码不显示,后 ...
- 终极解决办法rvct Cannot obtain license for Compiler (feature compiler) with license version >= 3.1
参考:https://blog.csdn.net/nic_r/article/details/7458038 ARM C/C++ Compiler, RVCT4. [Build ] armcc : e ...
- IIS关于“ 配置错误 不能在此路径中使用此配置节”的解决办法
IIS关于“ 配置错误 不能在此路径中使用此配置节”的解决办法 原文链接:http://www.cnblogs.com/200325074/p/3679316.html 今天刚安装好IIS8.5, 我 ...
- Excel在任务栏中只显示一个窗口的解决办法
Excel在任务栏中只显示一个窗口的解决办法 以前朋友遇到过这个问题,这次自己又遇到了,习惯了以前的那种在任务栏中显示全部窗口,方便用Alt+Tab键进行切换. 如果同时打开许多Excel工作簿, ...
- 在ASP.net中的UpdatePanel,弹窗失败解决办法
原文:在ASP.net中的UpdatePanel,弹窗失败解决办法 最开始我用: Response.Write("<script>alert('和哈呵呵呵呵呵呵!')</s ...
随机推荐
- HDU 2141 Can you find it?【二分查找是否存在ai+bj+ck=x】
Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate ...
- jQuery的实用技巧
1.禁用页面的右键菜单 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ retu ...
- [Contest20180314]数列
数据范围告诉我们要写两档的分 第一档:$M\leq200,N\leq10^9$,可以枚举$m$计算答案 直接矩阵快速幂:$O\left(M^4\log_2N\right)$,会超时,所以我们需要某些“ ...
- 【dfs序】【set】bzoj3991 [Sdoi2015]寻宝游戏
在考试代码的基础上稍微改改就a了……当时为什么不稍微多想想…… 插入/删除一个新节点时就把其dfn插入set/从set中删除. 当前的答案就是dfn上相邻的两两节点的距离和,再加上首尾节点的距离. 比 ...
- 程序调控和监视(Logcat,Debug)
1.Logcat 2.效果图:实现点击Button,提示Logcat信息 (1)activity_main.xml <?xml version="1.0" encoding= ...
- hdu2829 四边形优化dp
Lawrence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- Ubuntu 14 中 VirtualBox发生错误Kernel driver not installed (rc=-1908)
宿主系统是Ubuntu 14,在VirtualBox中安装 CentOS 6.5 时,提示如下错误: Kernel driver not installed (rc=-1908) 网友提供的解决方案: ...
- 继承了母板页的onload的事件
这段时间实在是太忙了, 现借国庆放假之际,把一些问题写一下, 不久前,有位网友问我继承了母版页的页面要加载body的onload事件如何加载,我以前刚开始用母板的时候也碰到过这种问题, 直接是用JAV ...
- easyui missingMessage
<input class="easyui-textbox" type="text" name="username" style=&qu ...
- [Android Memory] Android 的 StrictMode
android的2.3 之后引入的StrictMode 对网络的访问做了限制啊. public void onCreate() { if (DEVELOPER_MODE) { StrictMode.s ...