Repeater控件動(dòng)態(tài)變更列(Header,Item和Foot)信息實(shí)現(xiàn)思路
需求開發(fā)一個(gè)小報(bào)表,顯示最近五個(gè)月的summary的數(shù)量統(tǒng)計(jì),報(bào)表會(huì)隨月份的變化而變化,如下圖。第一列[Department]固定,第二至第六列,也就是說Nov 2012 這列會(huì)在下月的時(shí)候消失,其后的列會(huì)向前移,最后一列Mar 2013 會(huì)變?yōu)锳pr 2013。
下圖中,最底一行是顯示每一列的總數(shù)(除第一列外)。
為了這個(gè)報(bào)表,Insus.NET決定使用Repeater控件來實(shí)現(xiàn)。難度在于動(dòng)態(tài)顯法第二列至第六列的列名,以及綁定數(shù)據(jù)。最后一行計(jì)算總計(jì)的,只要完成上面的動(dòng)態(tài)綁定之后,也算不上問題,Repeater的FooterTemplate顯示某列總計(jì)方法,可以參考這篇:http://chabaoo.cn/article/34972.htm由于整個(gè)報(bào)表,列數(shù)一定,共六列,因此我們可以把這個(gè)寫死。
首先是HeaderTemplate,內(nèi)嵌一個(gè)table,設(shè)計(jì)好六列,每列拉一個(gè)Label,并分別設(shè)置好Label的ID,最好讓它們似帶有索引的序數(shù):
接下來是ItemTemplate設(shè)計(jì),可以參考HeaderTemplate的設(shè)計(jì)方式:
最后是FooterTemplate的設(shè)計(jì),設(shè)計(jì)好Label的ID,td文本對(duì)齊以及背景顏色:
三個(gè)Template的Label的ID都不一樣,但有一些規(guī)律,這樣方便在后臺(tái)好 FindControl以及將來重構(gòu)好控制。
上面全是html的設(shè)計(jì),下面將是程序開發(fā)。
//實(shí)例化對(duì)象,以及宣告一個(gè)DataTable對(duì)象objDt。
PrintLog objPrintLog = new PrintLog();
DataTable objDt;
//宣告5個(gè)變量,將用來存儲(chǔ)那5個(gè)月份每個(gè)部分的數(shù)量
decimal c1, c2, c3, c4, c5;
把從數(shù)據(jù)庫獲取的數(shù)據(jù)綁定至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"); //設(shè)置好區(qū)域文化
DateTime currentDateTime = DateTime.Now; //獲取當(dāng)前日期時(shí)間
objPrintLog.Year = currentDateTime.Year; //獲取年份賦值
objPrintLog.Month = currentDateTime.Month;//獲取月份賦值
objPrintLog.Months = 5; //最近連續(xù)5個(gè)月份
objDt = objPrintLog.GetSummaryReportByYearMonth();
this.RepeaterLFMS.DataSource = objDt;
this.RepeaterLFMS.DataBind();
}
電話響了,需要先接電話... 大約一分三十六秒完畢,順便去沖杯Coffee.
下面將是Repeater控件的OnItemDataBound事件,Insus.NET也分別對(duì)header,Item以及Foot進(jìn)行圖列說明代碼:

Item 綁定:

最后是Foot的代碼:
呵呵,完成了。相信它在運(yùn)行時(shí),會(huì)隨著時(shí)間的前進(jìn)(月份的變化),它對(duì)應(yīng)的列名,數(shù)據(jù)也會(huì)隨之變化。
- asp.net使用Repeater控件中的全選進(jìn)行批量操作實(shí)例
- ASP.NET中repeater控件用法實(shí)例
- 在Repeater控件中通過Eval的方式綁定Style樣式代碼
- Repeater控件與PagedDataSource結(jié)合實(shí)現(xiàn)分頁功能
- Repeater控件實(shí)現(xiàn)編輯、更新、刪除等操作示例代碼
- 給Repeater控件里添加序號(hào)的5種才常見方法介紹
- Repeater控件綁定的三種方式
- 如何取得Repeater控件選擇的項(xiàng)目及注意事項(xiàng)
- Repeater控件分別綁定數(shù)組和ArrayList實(shí)現(xiàn)思路
- Repeater控件數(shù)據(jù)導(dǎo)出Excel(附演示動(dòng)畫)
- 淺析Repeater控件的使用 (原樣導(dǎo)出和動(dòng)態(tài)顯示/隱藏Repeater中的列)
相關(guān)文章
.NET Core系列之MemoryCache 緩存選項(xiàng)
這篇文章主要介紹了.NET Core系列之MemoryCache 緩存選項(xiàng),詳細(xì)的介紹一下 MSCache 中的 Options,由此來介紹一些 MSCache 中的內(nèi)部機(jī)制,感興趣的小伙伴們可以參考一下2018-08-08ASP.NET?MVC5網(wǎng)站開發(fā)之添加、刪除、重置密碼、修改密碼、列表瀏覽管理員篇2(六)
這篇文章主要為大家詳細(xì)介紹了ASP.NET?MVC5網(wǎng)站開發(fā)之添加、刪除、重置密碼、修改密碼、列表瀏覽,感興趣的小伙伴們可以參考一下2016-08-08asp.net 該行已經(jīng)屬于另一個(gè)表錯(cuò)誤的解決方法
從一個(gè)TABLE中取一行放到另一個(gè)TABLE里報(bào)錯(cuò): 該行已經(jīng)屬于另一個(gè)表。的解決辦法 用下面來個(gè)方法就OK了。2010-05-05生成代碼從T到T1、T2、Tn自動(dòng)生成多個(gè)類型的泛型實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于生成代碼從T到T1、T2、Tn自動(dòng)生成多個(gè)類型的泛型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧2018-09-09使用本機(jī)IIS?Express開發(fā)Asp.Net?Core應(yīng)用圖文教程
IIS Express是一個(gè)Mini版的IIS,能夠支持所有的Web開發(fā)任務(wù),本篇經(jīng)驗(yàn)將和大家介紹使用自定義主機(jī)名來訪問運(yùn)行在IIS?Express上的站點(diǎn)程序的方法,希望對(duì)大家的工作和學(xué)習(xí)有所幫助2023-06-06WPF項(xiàng)目在設(shè)計(jì)界面調(diào)用后臺(tái)代碼
這篇文章介紹了WPF項(xiàng)目在設(shè)計(jì)界面調(diào)用后臺(tái)代碼的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Centos7+Docker+Jenkins+ASP.NET Core 2.0自動(dòng)化發(fā)布與部署的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于Centos7+Docker+Jenkins+ASP.NET Core 2.0自動(dòng)化發(fā)布與部署的相關(guān)資料,文中通過示例代碼及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2018-05-05AspNetPager分頁控件定義及應(yīng)用樣式示例介紹
AspNetPager分頁控件想必大家并不陌生吧,在本文將為大家詳細(xì)介紹下此控件的css樣式定義,感興趣的朋友可以參考下2013-10-10Asp.net MVC下使用Bundle合并、壓縮js與css文件詳解
在web優(yōu)化中有一種手段,壓縮js,css文件,減少文件大小,合并js,css文件減少請(qǐng)求次數(shù)。asp.net mvc中為我們提供一種使用c#代碼壓縮合并js和css這類靜態(tài)文件的方法。這篇文章主要介紹了在Asp.net MVC下使用Bundle合并、壓縮js與css文件的方法,需要的朋友可以參考下。2017-03-03