repeater复杂表格的显示
首先简要的描述一下所要完成的事情:将某一个方言中的每一个声韵调组合,按照格式显示一个字
数据库中的信息:****,声母(Initial),韵母(Final),声调(Tone),一个汉字(Word),******
要显示的数据格式:

刚看到这个问题描述的时候的想法是:1、声母的个数不固定,韵母的个数不固定,声调的个数不固定,这三个信息都需要根据数据库的内容动态的显示。2、另外数据库中的信息是“声、韵、汉字”,这个结构和表格的结构式不同的,也就是要想显示这个表示需要把数据库中的信息重组。3、表格中的某些组合是在数据库中是没有数据的。
想到两个解决方案,第一个是重组出一个这样的dateset表格,然后直接用Repeater绑定这个表格。第二个是在针对每一个表格的声韵调组合,搜索数据库,有就填充数据,没有就显示为空。后面选了第二个解决方案。因为我觉得第一个方案中构造Dataset表格也需要去针对每一个声韵调组合去查询,还不如直接对页面进行操作。(想法比较简单)。
第二个方案中,首先要解决的就是表格的布局问题,据我的了解还没有哪一个控件可以直接实现动态列的显示。而且他本身也不能直接使用数据绑定。所以我选择了用Table、Repeater和LIteral的组合,通过Literal在后台自己构造一个这样样式的表格。下面就是工作的过程。
首先:在页面中插入repeater的空间,在HeaderTemplate标签中插入第一个Literal控件LiteralHeaderRow,用于显示前两行《韵母》和《声调》的信息,在ItemTemplate中插入第二个Literal控件LiteralItem,用于显示《声母》和《数据》信息。

在后台的代码中,我设定了三个字典,Dictionary<string, int> DicYunMu(key为韵母,value为韵母下声调的个数)、Dictionary<string, int> DicShengDiao (key为声调)、 Dictionary<string, int> DicShengMu (key为声母) 。

在表格的前两行显示表头,韵母和声调信息。方法为表头用一张图片完成,rowspan=2.。然后在第一行输出韵母(个数为DicYunMu.count,单元格内容为DicYunMu.key.tostring()),在第二行输出声调信息DIcShengDiao.key.tostring(),重复DicYunMu.count次。这样就完成了标头的显示。

剩下的就是数据的显示,一行的单元格个数为DicYunMu.count*DicShengDiao.count,每一行的数据的获取可以由DicShengMu.key、DicYunMu.key、DicShengDiao.key共同确定,根据这三个条件去数据表中检索,有数据,这填充数据,没有则为空。

到目前这样,就完成了数据的显示。实际上,这个显示还是有很多可以优化的地方。比方说我可以把第一次显示的方言信息在服务器上存成一张excel表,当我再次访问时,不用查询数据库,直接利用技术将excel贴在页面上显示。有什么问题和不足希望大家多多的指正。 下面是最终的效果

repeater复杂表格的显示的更多相关文章
- Repeater为空时显示“暂无数据”,很方便实用方法
Repeater为空时显示“暂无数据”,很方便实用方法 <FooterTemplate> <asp:Label ID="lblEmptyZP" Text=&q ...
- Repeater绑定数组并显示其值
web开发中,尤其是对于数据展示,不得不说Repeater是一个万能的控件,而且使用也很方便. 在ASP.NET中将数组绑定到Repeater中请问如何在Repeater前台页面中显示该数组的值? s ...
- 解决百度Ueditor编辑器表格不显示边框问题
一.主要内容 CMS使用百度Ueditor编辑器中的表格功能,在编辑模式下可以正常显示边框,而文章发布之后表格不能显示边框.本博文经过查阅相关资料,最终解决了该问题. 二.使用平台 1. dedecm ...
- 利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据
登录界面 <body><form action="login1.php" method="post"><div>用户名:&l ...
- UEditor在asp.netMVC4中的使用,包括上传功能,粘贴表格不显示边框问题
网页编程中在线编辑器的使用还是很重要的,最近研究了一下百度出的UEditor编辑器,把它结合到刚学的asp.netMVC+EF中,同时实现上传资料(包括图片,视频等)功能,下面就以一个最简单的新闻管理 ...
- Java 设置PDF跨页表格重复显示表头行
在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好.下面分享一个方法如何在表格跨页是显示表格的表头内容,这里只需要简单使用方法 grid.set ...
- Extjs 表格横坐标显示问题
在项目中显示chart时,当横坐标的标签名称过长时,extjs会自动隐藏部分的标签. 我想,如果能让标签斜着,或者纵向显示的话,就能够节省x轴上的长度. 经过在网上查找,解决方案如下. //在表格的a ...
- Repeater展示表格
1.可以不用table展示数据 <asp:Repeater ID="Repeater1" runat="server"> <ItemTempl ...
- Webform——Repeater多表联合显示
对于一个表里,通过外键连接如何显示另一个表的数据,前Winform里可以用封装类来实现. 对于Webform,可以用封装类,也可以用Repeater的ItemDataBound事件(//在项被绑定数据 ...
随机推荐
- QS之vcom
-2008 | -2002 | -93 | -87 choose VHDL 2008, 2002, 1993, or 1987 -explicit resolve ambiguous overload ...
- Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1
Cartfile:github "SwiftyJSON/SwiftyJSON"got error:Module compiled with Swift 3.0 cannot be ...
- home-brew 安装&下载
安装: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&qu ...
- 阿里云开放服务oss的api
http://imgs-storage.cdn.aliyuncs.com/help/oss/OSS_API_20131015.pdf?spm=5176.383663.5.23.JQjiIK&f ...
- gradle gradlew 的使用
jcenter() 仓库比 mavenCentral() 仓库快,因此最好将jcenter 放前面,这样下载速度最快. 使用本地软件仓库:repositories { flatDir { dirs ' ...
- JQ避免出现多次执行一个事件的解决方案
点击按钮之后会多次执行一个事件的话,就在方法结尾加入如下代码,这样的话事件就可以只执行一次了 //避免出现多次执行事件的问题 event.stopPropagation(); 此外,时间的重复绑定也有 ...
- Codeforces 627 A. XOR Equation (数学)
题目链接:http://codeforces.com/problemset/problem/627/A 题意: 告诉你s 和 x,a + b = s a xor b = x a, b > ...
- c++字符串机理
在windows编程中,由于编码方式的不同和c与c++的不同而造成了许多复杂的有关字符串之间的转换 首先,windows编码方式有ANSCLL和UNICODE,前者是单字符的,后者是双字符的. 然后, ...
- How Tomcat Works(十)
本文接下来分析tomcat的日志记录器,日志记录器是用来记录消息的组件,在tomcat中,日志记录器需要与某个servlet容器相关连:在org.apache.catalina.logger包下,to ...
- Web Service实现分布式服务的基本原理
简单的说, 就是客户端根据WSDL 生成 SOAP 的请求消息, 通过 HTTP 传输方式(也可以是其它传输方式, 如 FTP 或STMP 等,目前 HTTP 传输方式已经成为 J2EE Web Se ...