手机版

如何通过Repeater控件动态改变列(表头、项、脚)信息的思路

时间:2021-11-22 来源:互联网 编辑:宝哥软件园 浏览:

要求开发一个小报表,显示最近五个月汇总的数量统计。报表会随着月份的变化而变化,如下图所示。第一列【部门】是固定的,第二列到第六列,也就是说2012年11月这一列下个月消失,后面的几列往前走,最后一列2013年3月变成2013年4月。下图中,底线显示了每一列的总数(第一列除外)。

对于这个报告,Insus.NET决定使用中继器控制。难点在于动态显示第二列到第六列的列名并绑定数据。最后一行算总数不是问题,只要完成以上动态绑定。中继器的FooterTemplate显示了某一列的总计方法。请参考这篇文章://www . JB 51 . net/article/34972 . htm,因为整个报表有一定的列数,总共有6列,所以我们可以把这个写下来。首先,HeaderTemplate嵌入了一个表。设计了六列,每列拉一个标签,分别设置标签的标识。最好让它们看起来像索引为: 的序数。

接下来是ItemTemplate的设计。可以参考HeaderTemplate的设计方法:

最后设计了FooterTemplate,设计了Label的ID、td文本对齐方式和背景色:

三个模板的标签ID不一样,但是有一些规则,方便后台FindControl和以后重构控件。以上都是html设计,下面将是程序开发。复制代码如下://实例化对象并声明一个DataTable对象objDt。PrintLog objPrintLog=new PrintLog();DataTable objDt//声明五个变量,将用于存储这五个月内各部分的编号,即小数c1、c2、c3、c4、c5、C5;将从数据库获得的数据绑定到Repeater控件:复制代码如下: protected void page _ load(对象发送方,eventargs e) {if(!IsPostBack){ Data _ Binding();} } private void Data _ Binding(){((IUserControlContainer)this。大师)。ShowControl=trueculture info oCultureInfo=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这个。RepeaterLFMS . DataBind();}电话响了,你需要先接电话.大约一分三十六秒后,顺便泡一杯咖啡。接下来,将是Repeater控件的OnItemDataBound事件,Insus.NET还分别说明了header、Item和Foot的代码:

项目绑定:

最后是Foot的代码:

呵呵,搞定了。我相信它在运行的时候,会随着时间(月的变化)而变化,它对应的列名和数据也会发生变化。

版权声明:如何通过Repeater控件动态改变列(表头、项、脚)信息的思路是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。