水晶報表引數程式設計示例程式碼

iDotNetSpace發表於2009-02-02
Imports CrystalDecisions.Shared
    Imports CrystalDecisions.CrystalReports.Engine

    Private Const RPT_NAME As String = "CustomerOrders.rpt"
    Private Const PARAMETER_FIELD_NAME As String = "CustomerID"

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此處放置初始化頁的使用者程式碼

        ' 設定報表源
        report = New ReportDocument()
        report.Load(GetReportPath(RPT_NAME))

        ' 設定引數
        crvOrders.ParameterFieldInfo = GetParameterInfo(CType(Session("list"), ListItemCollection))

        crvOrders.ReportSource = report

        ' 顯示報表
        crvOrders.DataBind()

    End Sub
   
    '----------------------------------------------------------------
    ' Function GetParameterInfo:
    '   從核取方塊列表獲取引數欄位資訊
    ' Returns:
    '   引數欄位
    ' Parameters:
    '   [in]  list: 核取方塊列表
    ' Throws:
    '  
    ' PreConditions:
    '  
    '----------------------------------------------------------------
    Private Function GetParameterInfo(ByVal list As ListItemCollection) As ParameterFields

        Dim item As ListItem
        Dim isEmpty As Boolean = True
        Dim itemCount As Integer = 0

        ' 宣告將引數傳遞給檢視器控制元件所需的變數。
        Dim paramFields As New ParameterFields()
        Dim paramField As New ParameterField()
        Dim discreteVal As New ParameterDiscreteValue()

        ' 引數是具有多個值的離散引數。

        ' 設定引數欄位的名稱,它必須和報表中的引數相符。
        paramField.ParameterFieldName = PARAMETER_FIELD_NAME

        For Each item In list
            If item.Selected Then
                isEmpty = False
                itemCount += 1

                ' 設定一個離散值並將其傳遞給該引數
                discreteVal.Value = item.Value
                paramField.CurrentValues.Add(discreteVal)
                ' 新建一個離散值
                discreteVal = New ParameterDiscreteValue()
            End If
        Next

        If isEmpty Then
            For Each item In list
                ' 設定一個離散值並將其傳遞給該引數
                discreteVal.Value = item.Value
                paramField.CurrentValues.Add(discreteVal)
                ' 新建一個離散值
                discreteVal = New ParameterDiscreteValue()
            Next
        End If

        ' 將該引數新增到引數欄位集合。
        paramFields.Add(paramField)
        GetParameterInfo = paramFields

    End Function

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-545023/,如需轉載,請註明出處,否則將追究法律責任。

相關文章