zoukankan      html  css  js  c++  java
  • 水晶报表学习之三(参数传递问题)

    项目在使用过程,需要使用到参数传递选择,以前对水晶报表久有耳闻,不过使用起来,还真的是麻烦,很多东西从来没有接触过,遇到的问题多西多啊!
    以下是MSDN上关于解决参数传递的问题范例,先记录下,免的以后忘了!
    Default.aspx
    --------------------------------------------------------------------

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CustomersByCity.aspx.cs" Inherits="CustomersByCity" %>

    <%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
        Namespace="CrystalDecisions.Web" TagPrefix="CR" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <link href="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css"
            rel="stylesheet" type="text/css" />
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:ListBox ID="defaultParameterValuesList" runat="server" SelectionMode="Multiple">
        </asp:ListBox>
            &nbsp; &nbsp; &nbsp;
            <asp:Button ID="redisplay" runat="server" OnClick="redisplay_Click" Text="Redisplay Report" />
            <cr:crystalreportviewer id="CrystalReportViewer1" runat="server" autodatabind="True"
                height="1123px" reportsourceid="CrystalReportSource1" reuseparametervaluesonrefresh="True"
                width="897px"></cr:crystalreportviewer>
            <cr:crystalreportsource id="CrystalReportSource1" runat="server">
    <Report FileName="CustomersByCity.rpt"></Report>
    </cr:crystalreportsource>
       
        </div>
        </form>
    </body>
    </html>


    --------------------------------------------------------------------
    Default.aspx.cs
    --------------------------------------------------------------------

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;

    public partial class CustomersByCity : System.Web.UI.Page
    {
        private const string PARAMETER_FIELD_NAME = "City";
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        private void Page_Init(object sender, EventArgs e)
        {
            ConfigureCrystalReports();
        }


        private void ConfigureCrystalReports()
        {
            ArrayList arrayList = new ArrayList();
            string reportPath = Server.MapPath("CustomersByCity.rpt");
            CrystalReportViewer1.ReportSource = reportPath;
            ParameterFields parameterFields = CrystalReportViewer1.ParameterFieldInfo;

            if (!IsPostBack)
            {
                defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(parameterFields);
                defaultParameterValuesList.DataBind();
                arrayList.Add("Paris");
                arrayList.Add("Tokyo");
                Session["arrayList"] = arrayList;
            }
            else
            {
                arrayList = (ArrayList)Session["arrayList"];
            }

            SetCurrentValuesForParameterField(parameterFields, arrayList);

        }

        private void SetCurrentValuesForParameterField(ParameterFields parameterFields, ArrayList arrayList)
        {
            ParameterValues currentParameterValues = new ParameterValues();
            foreach (object submittedValue in arrayList)
            {
                ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
                parameterDiscreteValue.Value = submittedValue.ToString();
                currentParameterValues.Add(parameterDiscreteValue);
            }

            ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];
            parameterField.CurrentValues = currentParameterValues;

        }

        private ArrayList GetDefaultValuesFromParameterField(ParameterFields parameterFields)
        {
            ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];
            ParameterValues defaultParameterValues = parameterField.DefaultValues;
            ArrayList arrayList = new ArrayList();
            foreach (ParameterValue parameterValue in defaultParameterValues)
            {
                if (!parameterValue.IsRange)
                {
                    ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue;
                    arrayList.Add(parameterDiscreteValue.Value.ToString());
                }
            }

            return arrayList;
        }

        protected void redisplay_Click(object sender, EventArgs e)
        {
            ArrayList arrayList = new ArrayList();
            foreach (ListItem item in defaultParameterValuesList.Items)
            {
                if (item.Selected)
                {
                    arrayList.Add(item.Value);
                }
            }

            Session["arrayList"] = arrayList;
            ConfigureCrystalReports();
        }
    }
    --------------------------------------------------------------------
    其他详细说明请见MSDN:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/crystlmn/html/crtsktutorialscrvparametersdiscrete.htm

  • 相关阅读:
    python 文件相关知识
    python字符串,列表,字符串,元组,集合的一些方法
    一些小技巧和破坏性的实验
    CentOs 系统启动流程相关
    入手内核的前篇之进程和计划任务
    外部中断的理解
    串口程序的理解
    USART1_IRQHandler 函数的理解
    STM32串口的理解
    中断NVIC优先级的理解
  • 原文地址:https://www.cnblogs.com/Apollo/p/338636.html
Copyright © 2011-2022 走看看