需求开发一个小报表,显示最近五个月的summary的数量统计,报表会随月份的变化而变化,如下图。第一列[Department]固定,第二至第六列,也就是说Nov 2012 这列会在下月的时候消失,其后的列会向前移,最后一列Mar 2013 会变为Apr 2013。

下图中,最底一行是显示每一列的总数(除第一列外)。

为了这个报表,Insus.NET决定使用Repeater控件来实现。难度在于动态显法第二列至第六列的列名,以及绑定数据。最后一行计算总计的,只要完成上面的动态绑定之后,也算不上问题,Repeater的FooterTemplate显示某列总计方法,可以参考这篇:http://www.cnblogs.com/insus/archive/2013/03/21/2973326.html
由于整个报表,列数一定,共六列,因此我们可以把这个写死。

首先是HeaderTemplate,内嵌一个table,设计好六列,每列拉一个Label,并分别设置好Label的ID,最好让它们似带有索引的序数:

接下来是ItemTemplate设计,可以参考HeaderTemplate的设计方式:

最后是FooterTemplate的设计,设计好Label的ID,td文本对齐以及背景颜色:

三个Template的Label的ID都不一样,但有一些规律,这样方便在后台好 FindControl以及将来重构好控制。

上面全是html的设计,下面将是程序开发。

    //实例化对象,以及宣告一个DataTable对象objDt。PrintLog objPrintLog = new PrintLog();DataTable objDt;//宣告5个变量,将用来存储那5个月份每个部分的数量decimal c1, c2, c3, c4, c5;

把从数据库获取的数据绑定至Repeater控件:

View Code

 protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){Data_Binding();}}private void Data_Binding(){((IUserControlContainer)this.Master).ShowControl = true;CultureInfo oCultureInfo = new CultureInfo("en");  //设置好区域文化DateTime currentDateTime = DateTime.Now;  //获取当前日期时间objPrintLog.Year = currentDateTime.Year;  //获取年份赋值objPrintLog.Month = currentDateTime.Month;//获取月份赋值objPrintLog.Months = 5; //最近连续5个月份
objDt = objPrintLog.GetSummaryReportByYearMonth();this.RepeaterLFMS.DataSource = objDt;this.RepeaterLFMS.DataBind();}

电话响了,需要先接电话...  大约一分三十六秒完毕,顺便去冲杯Coffee.

下面将是Repeater控件的OnItemDataBound事件,Insus.NET也分别对header,Item以及Foot进行图列说明代码:

Item 绑定:

最后是Foot的代码:

呵呵,完成了。相信它在运行时,会随着时间的前进(月份的变化),它对应的列名,数据也会随之变化。

转载于:https://www.cnblogs.com/insus/archive/2013/03/22/2974970.html

Repeater控件动态变更列(Header,Item和Foot)信息相关推荐

  1. repeater 控件ajax绑定数据源,【ASP.NET】第九课——使用DataList控件和Repeater控件绑定数据...

    知识点:掌握 DataList 控件呈现数据的方法: 掌握 Repeater 控件呈现数据的方法:掌握处理 Repeater 控件中的按钮事件. 1. 使用 DataList 控件呈现数据 在用 AS ...

  2. 动态合并Repeater控件数据列

    前天Insus.NET实现<动态合并GridView数据行DataRow的列>.今天再玩玩Repeater控件,功能也是动态合并某列栏位. Repeater控件跟GridView控件一样集 ...

  3. C# DataGridView控件动态添加行与列

    DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行, ...

  4. Repeater控件

    Repeater控件和DataList控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行.      Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输 ...

  5. asp.net学习之Repeater控件

    Repeater控件和DataList控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行.      Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输 ...

  6. C#控件之Repeater控件使用

    歡迎大家來討論,修改,一定虛心接受. 1.為什麼使用Repeater控件? 關於把從數據庫讀取的數據綁定到前台頁面,我們可以使用DataGrid.DataGridView以及Repeater來佈局,三 ...

  7. aspx repeater 用法_详解ASP.NET数据绑定操作中Repeater控件的用法

    一.绑定控件之Repeater.NET封装了多种数据绑定控件,诸如GridView.DataList等但该篇文章将会从Repeater入手,因为Repeater只提供了基本的数据绑定模板,没有内置其它 ...

  8. repeater 控件ajax绑定数据源,[Asp.net之旅]--数据绑定控件之Repeater

    引言 前几篇的文章在说AJAX的内容,利用AJAX技术能够开发出高效运行的网站应用程序,不过在进行B/S项目开发时只拥有AJAX技术是远远不够的,踏入到B/S要学的东西会更多,但相较C/S的复杂逻辑结 ...

  9. 今日份课堂笔记:GridView的使用和Repeater控件的使用

    题目:分别用GridView控件和Repeater控件实现下图所示内容 一.用GridView控件实现: 1.搭建数据库,创建表并插入相关数据,如下图: 2.打开VS创建ASP.NET Web应用程序 ...

最新文章

  1. 数字营销,带动汽车销量增长
  2. Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...
  3. android 电量控件,Android实现显示电量的控件代码
  4. WinDbg学习笔记(一)--认识WinDbg
  5. 我的Go语言学习之旅二:入门初体验 Hello World
  6. pdf文档遇到了共享冲突_如何将链接共享为PDF格式的Google文档链接
  7. 未获取root手机抓包方法
  8. 湖南省普通高等学校计算机应用水平,湖南省普通高等学校非计算机专业学生计算机应用水平二级考试大纲...
  9. 学c语言方法,学习C语言方法“新手必看”
  10. 一个完整的嵌入式程序_嵌入式入门-从STM32CudeMX、FreeRtos、Proteu仿真开始
  11. 演示如何利用log4net记录程序日志信息
  12. 2020职场自顾自说
  13. matlab希尔伯特变换,利用MATLAB实现Hilbert变换代码
  14. Unity3D方向键控制人物移动的代码
  15. 基于蒙特卡洛模拟的大规模电动车充电模型
  16. 阿里云ECS后台CPU占用100%,top却找不到
  17. virtualbox 清理磁盘占用空间
  18. 深度丨语音识别技术专利申请分析及关键技术展望(上)
  19. java线程池——逐步分析
  20. 雷神simplest_ffmpeg_player解析(四)

热门文章

  1. 小程序源码:聊天斗图微信表情包
  2. IT连创业系列:说说苹果商店AppStore上架App应用前后遇到的那些神坑
  3. Ubuntu进入睡眠模式
  4. python自带库zlib_python中的zlib解压
  5. 谈谈8583报文的使用及测试
  6. VC++6.0 MFC显示模态对话框和非模态对话框
  7. for循环次数太多的时间优化_matlab for循环过大程序运行慢解决方案
  8. 专为《巫师3》打造 次世代RedEngine 3引擎公布
  9. HDU 2022 海选女主角
  10. 表格第一行固定,下面