需要开发一个小报表,显示最近五个月的汇总数统计,报表会随着月份的变化而变化。接下来详细介绍一下实现方法,有兴趣的不要错过。
有必要开发一个小报表,显示最近五个月的汇总数统计。报表会随着月份的变化而变化,如下图所示。第一列【部门】是固定的,第二列到第六列,也就是说,2012年11月这一列将在下个月消失,后续的列将向前移动,最后一列2013年3月将变成2013年4月。
在下图中,最下面一行显示了每一列的总数(第一列除外)。
对于这个报告,Insus.NET决定使用中继器控制来实现它。难点在于动态显示第二至第六列的列名和绑定数据。如果最后一行算总数,只要完成上面的动态绑定就不会有问题。Repeater的FooterTemplate显示某一列的合计方法。请参考这篇文章:https://www.jb51.net/article/34972.htm,因为整个报告有一定数量的栏目,总共有六个栏目,所以我们可以把这个写死。
首先,HeaderTemplate嵌入了一个表格,设计了六列,每列拉一个标签,分别设置标签的id。最好使它们看起来有索引序数。接下来,ItemTemplate的设计可以参考HeaderTemplate的设计方法。最后,设计FooterTemplate、标签ID、td文本对齐和背景颜色:
这三个模板的标签有不同的id,但是有一定的规则,便于在后台查找控件和以后重构控件。
上面全是html设计,下面会是程序开发。复制代码如下://实例化对象,声明一个DataTable对象objDt。PrintLog objPrintLog=new PrintLog();DataTable objDt
//声明五个变量,用来存储那五个月小数c1,c2,c3,c4,c5的每一部分的数量;将从数据库获取的数据绑定到Repeater控件:复制代码如下:protected void page _ load(object sender,eventargs e) {if(!IsPostBack){ Data _ Binding();} }
private void Data _ Binding(){((IUserControlContainer)this。主人)。ShowControl=true
culture info oculture info=new culture info(' en ');//设置区域区域性datetime current datetime=datetime . now;//获取当前日期时间objprintlog . year=current datetime . year;//获取年份赋值objprintlog . month=current datetime . month;//获取月份赋值objPrintLog。月=5;//最近连续5个月
objDt=objPrintLog。GetSummaryReportByYearMonth();这个。RepeaterLFMS . DataSource=objDt这个。repeater lfms . DataBind();}电话响了,你需要先接.大约需要一分三十六秒才能完成。顺便去冲杯咖啡。
下面将是Repeater控件的OnItemDataBound事件,Insus.NET也将分别说明header、Item和Foot:
项目绑定:
最后,是脚的代码:
呵呵,完了。我相信它在运行的时候会随着时间(月份的变化)往前走,它对应的列名和数据也会随之变化。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。