.NET中RDLC循環(huán)處理數(shù)據(jù)的應(yīng)用分析
private List<UserData> CreateDataSet()
{
List<UserData> userDataSet = new List<UserData>();
userDataSet.Add(new UserData() { Name = "Clark", Age = 18 });
userDataSet.Add(new UserData() { Name = "Yaya", Age = 15 });
return userDataSet;
}
我們可以很快速的使用RDLC里的數(shù)據(jù)表控件,來將數(shù)據(jù)呈現(xiàn)在報表上。
但是當(dāng)客戶要求下圖的報表,要將數(shù)據(jù)源內(nèi)容顯示在一行。RDLC處理這種需求就沒有那么簡單,這是因?yàn)镽DLC沒有循環(huán)處理的函式可以使用。造成開發(fā)人員要組合數(shù)據(jù),必須使用隱藏列表、在外部組合字符串…等等迂回的方式建立報表內(nèi)容。但這樣的方式開發(fā),既沒有效率而且也有很多的限制。
這個問題困擾了我好幾天,昨晚睡到一半忽然有靈感??梢允褂肦DLC里的Sum函式,來做數(shù)據(jù)循環(huán)的處理。
Sum函式會取得數(shù)據(jù)集中的每一筆資料,并且計(jì)算出全部數(shù)據(jù)的總和。我們可以將表達(dá)式寫為下列的函式,利用code.PushStringStack這個RDLC自定義函式,來讓Sum函式取得所有數(shù)據(jù)。這樣的寫法,就可以將數(shù)據(jù)集中的每一筆數(shù)據(jù)都交由code.PushString處理過一次。
=Sum(code.PushString(Fields!Name.Value, Fields!Age.Value), "UserDataSet")
接著看code.PushString這個RDLC自定義函式的內(nèi)部,使用了一個Static的字符串變量,來記錄每一筆數(shù)據(jù)處理之后的結(jié)果。到這邊開發(fā)人員應(yīng)該可以理解,這樣的方式就是在跑循環(huán)處理數(shù)據(jù)。
Public Shared _foreachResult As String = String.Empty
Public Shared Function PushString(userName As String, userAge As String) As Integer
_foreachResult += userName & "(" & userAge & "), "
Return 0
End Function
當(dāng)然啦,跑完循環(huán)處理完數(shù)據(jù),最終還是要將數(shù)據(jù)顯示在畫面上。這邊很簡單的就是建立一個code.PopString回傳。
Public Shared Function PopString() As String
Return _foreachResult
End Function
并且將原本的表達(dá)式改寫成為:
=IIF(Sum(code.PushString(Fields!Name.Value, Fields!Age.Value), "UserDataSet") <> 0, "", code.PopString())
編譯并且執(zhí)行之后,就可以看到在RDLC的文本框里,已經(jīng)正確的顯示了客戶要求的數(shù)據(jù)格式。
范例程序 : RdlcForeachDataSample_jb51net點(diǎn)此下載。
相關(guān)文章
asp.net下Linq To Sql注意事項(xiàng)小結(jié)
對于Linq 連接數(shù)據(jù)庫進(jìn)行操作時需注意的問題2008-10-10.Net彈性和瞬態(tài)故障處理庫Polly實(shí)現(xiàn)彈性策略
這篇文章介紹了.Net彈性和瞬態(tài)故障處理庫Polly實(shí)現(xiàn)彈性策略的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06由于擴(kuò)展配置問題而無法提供您請求的頁面錯誤解決方法
這篇文章主要介紹了由于擴(kuò)展配置問題而無法提供您請求的頁面錯誤解決方法,需要的朋友可以參考下2014-05-05一個簡單的asp.net 單點(diǎn)登錄實(shí)現(xiàn)
上次做了學(xué)校的火車訂票系統(tǒng),那邊要求要從學(xué)生信息平臺直接點(diǎn)過來就是登錄狀態(tài),不用在重新登錄。學(xué)生信息平臺原來是用asp做的,而火車訂票系統(tǒng)是asp.net做的。兩個網(wǎng)站的學(xué)生信息調(diào)用的是同一個數(shù)據(jù)庫。2009-11-11ASP.NET?MVC使用Knockout獲取數(shù)組元素索引的2種方法
這篇文章介紹了ASP.NET?MVC使用Knockout獲取數(shù)組元素索引的2種方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
這篇文章主要介紹了asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法 ,需要的朋友可以參考下2014-10-10