水晶报表学习之三(参数传递问题)

项目在使用过程,需要使用到参数传递选择,以前对水晶报表久有耳闻,不过使用起来,还真的是麻烦,很多东西从来没有接触过,遇到的问题多西多啊!
以下是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

转载于:https://www.cnblogs.com/Apollo/archive/2006/02/27/338636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值