欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET中RDLC循環(huán)處理數(shù)據的應用分析

 更新時間:2013年05月04日 11:55:41   作者:  
本篇文章介紹了,.NET中RDLC循環(huán)處理數(shù)據的應用分析。需要的朋友參考下
當我們在使用RDLC開發(fā)報表的時候,如果數(shù)據源內容如下。
復制代碼 代碼如下:

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ù)據表控件,來將數(shù)據呈現(xiàn)在報表上。

但是當客戶要求下圖的報表,要將數(shù)據源內容顯示在一行。RDLC處理這種需求就沒有那么簡單,這是因為RDLC沒有循環(huán)處理的函式可以使用。造成開發(fā)人員要組合數(shù)據,必須使用隱藏列表、在外部組合字符串…等等迂回的方式建立報表內容。但這樣的方式開發(fā),既沒有效率而且也有很多的限制。

這個問題困擾了我好幾天,昨晚睡到一半忽然有靈感??梢允褂肦DLC里的Sum函式,來做數(shù)據循環(huán)的處理。

Sum函式會取得數(shù)據集中的每一筆資料,并且計算出全部數(shù)據的總和。我們可以將表達式寫為下列的函式,利用code.PushStringStack這個RDLC自定義函式,來讓Sum函式取得所有數(shù)據。這樣的寫法,就可以將數(shù)據集中的每一筆數(shù)據都交由code.PushString處理過一次。

復制代碼 代碼如下:

=Sum(code.PushString(Fields!Name.Value, Fields!Age.Value), "UserDataSet")

接著看code.PushString這個RDLC自定義函式的內部,使用了一個Static的字符串變量,來記錄每一筆數(shù)據處理之后的結果。到這邊開發(fā)人員應該可以理解,這樣的方式就是在跑循環(huán)處理數(shù)據。
復制代碼 代碼如下:

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

當然啦,跑完循環(huán)處理完數(shù)據,最終還是要將數(shù)據顯示在畫面上。這邊很簡單的就是建立一個code.PopString回傳。
復制代碼 代碼如下:

Public Shared Function PopString() As String
    Return _foreachResult
End Function

并且將原本的表達式改寫成為:
復制代碼 代碼如下:

=IIF(Sum(code.PushString(Fields!Name.Value, Fields!Age.Value), "UserDataSet") <> 0, "", code.PopString())

編譯并且執(zhí)行之后,就可以看到在RDLC的文本框里,已經正確的顯示了客戶要求的數(shù)據格式。

 

范例程序 : RdlcForeachDataSample_jb51net點此下載。

相關文章

最新評論