首先简要的描述一下所要完成的事情:将某一个方言中的每一个声韵调组合,按照格式显示一个字

数据库中的信息:****,声母(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复杂表格的显示的更多相关文章

  1. Repeater为空时显示“暂无数据”,很方便实用方法

    Repeater为空时显示“暂无数据”,很方便实用方法 <FooterTemplate>   <asp:Label ID="lblEmptyZP" Text=&q ...

  2. Repeater绑定数组并显示其值

    web开发中,尤其是对于数据展示,不得不说Repeater是一个万能的控件,而且使用也很方便. 在ASP.NET中将数组绑定到Repeater中请问如何在Repeater前台页面中显示该数组的值? s ...

  3. 解决百度Ueditor编辑器表格不显示边框问题

    一.主要内容 CMS使用百度Ueditor编辑器中的表格功能,在编辑模式下可以正常显示边框,而文章发布之后表格不能显示边框.本博文经过查阅相关资料,最终解决了该问题. 二.使用平台 1. dedecm ...

  4. 利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据

    登录界面 <body><form action="login1.php" method="post"><div>用户名:&l ...

  5. UEditor在asp.netMVC4中的使用,包括上传功能,粘贴表格不显示边框问题

    网页编程中在线编辑器的使用还是很重要的,最近研究了一下百度出的UEditor编辑器,把它结合到刚学的asp.netMVC+EF中,同时实现上传资料(包括图片,视频等)功能,下面就以一个最简单的新闻管理 ...

  6. Java 设置PDF跨页表格重复显示表头行

    在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好.下面分享一个方法如何在表格跨页是显示表格的表头内容,这里只需要简单使用方法 grid.set ...

  7. Extjs 表格横坐标显示问题

    在项目中显示chart时,当横坐标的标签名称过长时,extjs会自动隐藏部分的标签. 我想,如果能让标签斜着,或者纵向显示的话,就能够节省x轴上的长度. 经过在网上查找,解决方案如下. //在表格的a ...

  8. Repeater展示表格

    1.可以不用table展示数据 <asp:Repeater ID="Repeater1" runat="server"> <ItemTempl ...

  9. Webform——Repeater多表联合显示

    对于一个表里,通过外键连接如何显示另一个表的数据,前Winform里可以用封装类来实现. 对于Webform,可以用封装类,也可以用Repeater的ItemDataBound事件(//在项被绑定数据 ...

随机推荐

  1. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  2. chrome 浏览器 开发者工具 性能检测 参数解释

    Sending is time spent uploading the data/request to the server. It occurs between blocking and waiti ...

  3. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  4. TBluetoothLE

    delphi 蓝牙技术 D:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Multi-Device Sam ...

  5. Android内存管理之道

    相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力.今天我们就谈谈在Android平台下内存的管理之道,开始今 ...

  6. Oracle 10进制转36进制

    CREATE OR REPLACE FUNCTION IDFMS.func_dec236 (parm IN INT DEFAULT 0)   RETURN VARCHAR2IS   /*   10进制 ...

  7. JDBC 与 ODBC 区别

    一. 二.

  8. 为什么 Apple 开发者网站关闭是件好事?

    作者:趋势科技 Apple 的开发者中心网站在 7 月 18 日因为安全漏洞或攻击而关闭.在他们的通知里,Apple 公司表示,这起安全事件可能导致开发商的姓名.通讯地址和电子邮件地址被盗取,虽然该公 ...

  9. xib上拖拽scrollview的自动布局方法

    http://www.cocoachina.com/ios/20150104/10810.html

  10. js ajax post提交 ie和火狐、谷歌提交的编码不一致,导致中文乱码

    今天遇到一个问题找了很久发现: 使用js ajax post提交 ie和火狐.谷歌提交的编码不一致,导致中文乱码 //http://www.cnblogs.com/QGC88 $.ajax({ url ...