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事件(//在项被绑定数据 ...
随机推荐
- Srum框架
Srum包括三个角色.四个会议.及三个产出物,如下图所示:
- 32+激发灵感的HTML5/CSS3网页设计教程
HTML5是寄托在HTML4基础上取得了的广泛成就.这不仅意味着你不必完全放弃现有的一些标记,而是可以借鉴,以加强 它. CSS3也以同样的方式在互联网内容的安排下,提供了它的柔韧性.CSS3是开 ...
- 30+简约时尚的Macbook贴花
当Macbooks Pro电脑在他们的设计之下仍然漂亮.独一无二时,我想说,他们已经成为相当的主流了.有时候如果你回忆过去的很美好的日子,当人们偷偷欣赏你的技术装备 的时候,大概是为你的外表增加亮点的 ...
- bool?
public class GuestResponse { [Required(ErrorMessage = "Please enter your name")] public st ...
- Windows Azure使用必读(转)
原文:http://www.cnblogs.com/dyllove98/archive/2013/06/15/3137528.html 近些日子帮了不少用户移植应用到了Windows Azure上,在 ...
- 【EasyUI】Combobox的联动和onChange/onSelect事件绑定
[效果图] (1)当选择“产品名称”这个查询项目时,运算条件只有“等于”和“不等于”,如下图所示. (2)当用户选择可以进行数值计算的查询项目时,运算条件就会有很多,如下图所示. [实现代码] 1.H ...
- 异步编程之Generator(1)——领略魅力
异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...
- Could not find a transformer to transform "SimpleDataType{type=org.mule.transport.NullPayload
mule esb报错 com.isoftstone.esb.transformer.Json2RequestBusinessObject.transformMessage(Json2RequestBu ...
- ubuntu 14.04 64位系统编译RT288x_SDK
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sha ...
- Python装饰器(decorator)
了解装饰器,要先了解闭包. 1,闭包(closure) 闭包是Python所支持的一种特性,它让在非global scope定义的函数可以引用其外围空间中的变量,这些外围空间中被引用的变量叫做这个函数 ...