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事件(//在项被绑定数据 ...
随机推荐
- JavaWeb高性能开发(一)
今日要闻: 淘宝删差评产业链 在你给出"差评""中评"后不久,有人会偷偷登录你的淘宝账户,把你之前给过的评价删除或改成"好评".而这种人就是 ...
- Mapreduce执行过程分析(基于Hadoop2.4)——(三)
4.4 Reduce类 4.4.1 Reduce介绍 整完了Map,接下来就是Reduce了.YarnChild.main()—>ReduceTask.run().ReduceTask.run方 ...
- UDP广域网,局域网通信-原理分析,穿透技术
一.UDP局域网通信. 这个比较简单,关于局域网中的2台或者更多的计算机之间的UDP通信,网络上一大把,直接复制粘贴就可以使用,原理也非常简单.所以,本文不做详细介绍. 二.UDP广域通信(包括路由器 ...
- 实体框架 (EF) 入门 => 三、CodeFirst 支持的完整特性列表
KeyAttribute 设置主键.如果为int类型,将自动设置为自增长列. 系统默认以Id或类名+Id作为主键.StringLengthAttribute 可设置最大最小长度以及验证提示信息等.最大 ...
- 第三百二十七天 how can I 坚持
都没心情学习了,睡觉.太失败了. 好了,你赢了,最怕女人不说话了,我妈一生气就不说话,有点怕我妈,你想删就把我删了吧,我不怪你. 给你个善意的建议,任何事情都要有度,过犹而不及,你是属于那种比较听家 ...
- ControlsFX8.0.2中对话框无法判断是否显示的修改
在org.controlsfx.dialog.FXDialog.java中加入 public abstract boolean isShowing(); 在org.controlsfx.dialog. ...
- 1001Sum Problem
Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): ...
- datagridview里面有combox避免双击两次的写法
双击两次变成单击一次的写法: void dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e) { //实现单击一次显示下 ...
- UI:UIScrollView、UIPageControl
一.UIScrollView的常⽤用属性 二.UIScrollView的常⽤用代理方法 三.UIPageControl的使⽤用 四.UIPageControl与UIScrollView的结合使⽤用 U ...
- 不间断图片滚动JS
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-05-07) MSClass是一款通用不间断滚动JS封装类,几乎支持目前所有流行风格的图片或文字滚动,横向/竖向/连续/间断 ...