Repeater控件动态变更列(Header,Item和Foot)信息实现思路_实用技巧

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

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

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

首先是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控件: 

复制代码 代码如下:

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的代码:

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

时间: 2024-10-21 07:44:21

Repeater控件动态变更列(Header,Item和Foot)信息实现思路_实用技巧的相关文章

Repeater控件动态变更列(Header,Item和Foot)信息(重构cs)_实用技巧

早上有分享<Repeater控件动态变更列(Header,Item和Foot)信息> ,是动态变更一些列的内容. 虽然它算不上是完全动态化,但它已经达到初期想要的效果.如果你稍有仔细,也能轻易把它弄出来.现另开一篇,Insus.NET不是重新另外写,而是想重构cs的代码,因为前一篇的代码虽然简单,但代码冗余过多. 重构开始:首先把这五个变量删除,因为在重构过程中,已经不需要这五个变量了. 复制代码 代码如下: //宣告5个变量,将用来存储那5个月份每个部分的数量 decimal c1, c2,

给Repeater控件里添加序号的5种才常见方法介绍_实用技巧

.net是目前非常热门的一种程序编译语言,在.net培训中的众多知识点中,给Repeater控件里添加序号的5种方法是非常重要的一个.下面就由达内的老师为大家介绍一下这方面的内容. Repeater是我们经常用的一个显示数据集的数据控件,经常我们希望在数据前显示数据的序号,那么我们该怎么为Repeater控件添加序号呢?下面编辑为大家介绍几种常用的为Repeater控件添加序号的方法: 方法一: 利用Container.ItemIndex属性,代码如下: 复制代码 代码如下: <Itemtemp

Repeater控件实现编辑、更新、删除等操作示例代码_实用技巧

如何在Repeater控件中实现像GridView控件一样的编辑.更新.删除功能? 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BindGrid(); } } private void BindGrid() { string strSQL = "SELECT * FROM [User]"; OleDbConnection objConnection =

asp.net GridView控件中模板列CheckBox全选、反选、取消_实用技巧

复制代码 代码如下: using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebC

AspNetPager分页控件源代码(Version 4.2)第1/2页_实用技巧

//AspNetPager分页控件源代码(Version 4.2): using System; using System.IO; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Collections.Specialized; using System.Text; using System.Componen

.NET的file文件上传控件使用方法 修改web.config文件上传大文件_实用技巧

修改Webcong文件: 以下为引用的内容: 复制代码 代码如下: <system.web> <httpRuntime maxRequestLength="40690" useFullyQualifiedRedirectUrl="true" executionTimeout="6000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8&q

asp.net ASPxTextBox等控件实现&amp;quot;回车模拟Tab&amp;quot;的 常用代码整理_实用技巧

近期在做一个Web项目,我使用DevExpress第三方控件. 由于该控件使用技巧中文资料较少,还真够呛的,只能边摸索,边开发. 今天我要实现一些编辑框如ASPxTextBox.ASPxComboBox等控件回车模拟Tab的功能.这没办法,用户用惯了回车,讨厌按Tab来移动焦点(鼠标点击更麻烦). 以ASPxTextBox为例,在ClientSideEvents属性中可设置许多客户端JavaScript代码,其中KeyPress就是我要写的. 首先,得准备要模拟Tab的JS代码,这网上很多,我随

控件开发时两种JS嵌入资源方式的使用方法_实用技巧

第一种: 直接把要嵌入的JS文件属性设置为"嵌入的资源".protected override void OnInit(EventArgs e) {       base.OnInit (e);        if(!base.Page.IsStartupScriptRegistered("Script"))         {                 Assembly assembly = typeof(TestControl).Assembly;    

ASP.Net2.0 GridView 多列排序,显示排序图标,分页_实用技巧

    最近在使用ASP.net 2.0的GridView 控件时,发现排序与分页功能Microsoft实现的都很简单,比如排序,在点击列名的时候来触发整页的PostBack,然后排序,但是在列头上没有一个显示升序降序的图标,这会让最终用户使用时很迷惑,因为不知道是升序了还是降序了,所以今天首先解决的第一问题就是升序降序在列上显示图标,第二要解决的问题是默认GridView按列排序只能排一列的,也就是不能进行多列排序,而在实际应用中仅仅按照一列来排序是不能满足业务需求的,第三是GridView