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

数据库中的信息:****,声母(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. CreateProcess error=206, The filename or extension is too long"的一个解决方案

    在实际项目中我使用antrun 和 closure-compiler压缩JS项目.然后我就使用如下代码: 首先加入依赖. <dependency> <groupId>com.g ...

  2. 性能测试-ApacheBench

    基本简介 ApacheBench 是一个指令列程式,专门用来执行网站服务器的运行效能,特别是针对Apache 网站服务器.这原本是用来检测 Apache 网站服务器能够提供的效能,特别是可以看出Apa ...

  3. (转)QR二维码生成及原理

    二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字, ...

  4. 轻松学Shell之认识正规表达式

    离线下载观看:http://down.51cto.com/data/148117   650) this.width=650;" onclick='window.open("htt ...

  5. Cocos2d-x项目移植到WP8小记

    Cocos2d-x项目移植到WP8小记 作者: K.C. 日期: 10/24/2013 Date: 2013-10-24 00:33 Title: Cocos2d-x项目移植到WP8小记 Tags: ...

  6. C++11之sizeof

    [C++11之sizeof] 在标准C++,sizeof可以作用在对象以及类别上.但是不能够做以下的事: 这会传回OtherType的大小.C++03并不允许这样做,所以会引发编译错误.C++11将会 ...

  7. JavaScript面向对象简介

    JavaScript面向对象简介 @(编程) [TOC] 1. 命名空间 命名空间是一个容器,它允许开发人员在一个独特的,特定于应用程序的名称下捆绑所有的功能. 在JavaScript中,命名空间只是 ...

  8. 用jmap分析java程序

    之前的随笔提到用jstack分析java线程情况,也是在这个项目中,当线程的问题解决之后,发现程序的内存一直增长,于是用jmap工具分析了一下java程序占用内存的情况. 命令很简单,直接 jmap ...

  9. #ifdef __cplusplus

    转自:http://www.2cto.com/kf/201302/191822.html #ifdef __cplusplus,一般用于将C++代码以标准C形式输出(即以C的形式被调用),这是因为C+ ...

  10. hdu 5532 Almost Sorted Array

    http://acm.hdu.edu.cn/showproblem.php?pid=5532  题目大意: 给你一个不规则的序列,问是否能够通过删除一个元素使其成为一个有序的序列(递增或递减(其中相邻 ...