添加 Crystal Reports 禁用 DropDownList2_SelectedIndexChanged 触发事件

问题描述 投票:0回答:0

我有一个加载报告的 ASP.NET webforms 页面。在这个页面上,我有几个 DropDownLists,其中

Page_Load
只有一个是可见的并且填充了来自 SQL Server 的数据,其他的被禁用。当
SelectedIndex_Changed
时,其他 DropDownLists 被启用并填充数据(级联 DropDownList)。这在 VS 2019 中运行良好,但在部署到生产环境 (IIS 10) 后,当我从第一个 DropDownList 中选择任何项目时,什么也没有发生。但是如果我单击提交按钮,第二个 DropDownList 将启用并填充。我知道这是因为我为报告添加的 CrystalReport,因为当我删除它时它工作得很好。我使用的是 Version=13.0.4000.0。这是我第一次开发应用程序,由于这个问题,我已经被困了好几天,我们将不胜感激。

我已经尝试过这里提供的解决方案https://answers.sap.com/questions/13030378/crystalreportviewer-stops-web-form-and-controls-po.html

这是我的代码示例

aspx.cs 文件

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace CashFlowMS.Report
{
    public partial class rptVweTransactionForAccountant : System.Web.UI.Page
    {
        private string connectionString = Properties.Settings.Default.connection;
        private SqlConnection _sqlConnection;
        private string _queryString;
        private SqlDataAdapter _sqlDataAdapter;
        private DataSet _dataSet;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                drpTransactionType.AppendDataBoundItems = true;
                drpTransactionType.Items.Clear();
                drpTransactionType.Enabled = true;
                drpTransactionType.Items.Insert(0, new ListItem("--select report type--", "-1"));

                drpBank.AppendDataBoundItems = true;
                drpBank.Items.Clear();
                drpBank.Items.Insert(0, new ListItem("--select bank--", "-1"));
                drpBank.Enabled = true;

                drpBranch.Items.Clear();
                drpBranch.Items.Insert(0, new ListItem("--select branch--", "-1"));
                drpBranch.Enabled = false;


                using (_sqlConnection = new SqlConnection(connectionString))
                {
                    // fill transaction type dropdown
                    _queryString = "select * from tblTransactionType";
                    _sqlDataAdapter = new SqlDataAdapter(_queryString, _sqlConnection);
                    _dataSet = new DataSet();
                    _sqlDataAdapter.Fill(_dataSet); // fill dataset

                    drpTransactionType.DataTextField = _dataSet.Tables[0].Columns["Type"].ToString(); // text field name of table dispalyed in dropdown
                    drpTransactionType.DataValueField = _dataSet.Tables[0].Columns["Id"].ToString(); // to retrive specific textfield name
                    drpTransactionType.DataSource = _dataSet.Tables[0]; //assigning datasource to the dropdownlist
                    drpTransactionType.DataBind(); //binding dropdownlist


                    // fill bank dropdown
                    _queryString = "select * from tblBank";
                    _sqlDataAdapter = new SqlDataAdapter(_queryString, _sqlConnection);
                    _dataSet = new DataSet();
                    _sqlDataAdapter.Fill(_dataSet);

                    drpBank.DataTextField = _dataSet.Tables[0].Columns["Name"].ToString();
                    drpBank.DataValueField = _dataSet.Tables[0].Columns["Id"].ToString();
                    drpBank.DataSource = _dataSet.Tables[0];
                    drpBank.DataBind();
                }
            }
        }

        protected void drpBank_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (drpBank.SelectedIndex == 0)
            {
                drpBranch.Enabled = false;
                drpBranch.SelectedIndex = 0;
            }
            else
            {
                drpBranch.AppendDataBoundItems = true;
                drpBranch.Enabled = true;
                drpBranch.Items.Clear();
                drpBranch.Items.Insert(0, new ListItem("--select branch--", "-1"));

                var bankValue = Convert.ToInt32(drpBank.SelectedValue);

                using (_sqlConnection = new SqlConnection(connectionString))
                {
                    _queryString = "SELECT * FROM tblBranch WHERE Bank_Id = '" + bankValue + "' ";

                    _sqlDataAdapter = new SqlDataAdapter(_queryString, _sqlConnection);
                    _dataSet = new DataSet();
                    _sqlDataAdapter.Fill(_dataSet);

                    drpBranch.DataTextField = _dataSet.Tables[0].Columns["Name"].ToString();
                    drpBranch.DataValueField = _dataSet.Tables[0].Columns["Id"].ToString();
                    drpBranch.DataSource = _dataSet.Tables[0];
                    drpBranch.DataBind();
                }

            }
        }

        protected void btnTransactionHistory_Click(object sender, EventArgs e)
        {

            if (drpTransactionType.SelectedIndex > 0 && drpBranch.SelectedIndex > 0 && drpBank.SelectedIndex > 0)
            {
                if (!string.IsNullOrWhiteSpace(txtStartDate.Text) && !string.IsNullOrWhiteSpace(txtEndDate.Text))
                {
                    DateTime startDate = Convert.ToDateTime(txtStartDate.Text);
                    DateTime endDate = Convert.ToDateTime(txtEndDate.Text);

                    try
                    {
                        using (_sqlConnection = new SqlConnection(connectionString))
                        {
                            _queryString = "SELECT * FROM View_Transaction where Branch = '" +
                            drpBranch.SelectedItem.Text + "' AND Bank = '" +
                            drpBank.SelectedItem.Text +
                            "' AND Acc_Type = 'Birr' AND Trans_Type = '" +
                            drpTransactionType.SelectedItem.Text + "' AND Date BETWEEN '" + startDate + "' AND '" + endDate + "'";

                            _sqlDataAdapter = new SqlDataAdapter(_queryString, _sqlConnection);
                            _dataSet = new DataSet();
                            _sqlDataAdapter.Fill(_dataSet);

                            var report = new ReportDocument();
                            report.Load(Server.MapPath("~/Report/rptTransactionHistory.rpt"));
                            report.Refresh();
                            report.SetDataSource(_dataSet.Tables[0]);

                            cryslRptVwrTransactionHistoryAccountant.ReportSource = report;
                            report.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, false, "Branch's Transaction History ");
                            report.Close();
                            report.Dispose();
                            Response.End();
                            cryslRptVwrTransactionHistoryAccountant.RefreshReport();
                        }
                    }

                    catch (Exception ex)
                    {
                        Page.ClientScript.RegisterStartupScript(GetType(), "ex", "alert('" + ex.Message + "');",
                        true);
                    }
                }

rptVwr.aspx 文件

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="rptVweTransactionForAccountant.aspx.cs" Inherits="CashFlowMS.Report.rptVweTransactionForAccountant" %>
<%@ Register TagPrefix="CR" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>

<!DOCTYPE html>

http://www.w3.org/1999/xhtml">
<head runat="server">

<title></title>

<body>
<form id="form1" runat="server">



<div id="boxes">
<h2>Transactional Reports Generating Page</h2>
<div id="right-box">

<p style="margin-left: 147px">
<asp:DropDownList ID="drpTransactionType" runat="server" AutoPostBack="true" Height="35px" Style="margin-left: 0px" Width="188px"></asp:DropDownList>
<asp:DropDownList ID="drpBank" runat="server" AutoPostBack="true" Height="33px" OnSelectedIndexChanged="drpBank_SelectedIndexChanged" Style="margin-left: 12px" Width="189px"></asp:DropDownList>
<asp:DropDownList ID="drpBranch" runat="server" AutoPostBack="true" Height="33px" Style="margin-left: 11px" Width="193px"></asp:DropDownList>
</p>
<p style="margin-left: 291px">
<asp:Label ID="Label1" runat="server" Text="From:"></asp:Label>
<asp:TextBox ID="txtStartDate" runat="server" TextMode="Date"></asp:TextBox>

<asp:Label ID="Label2" runat="server" Text="To:"></asp:Label>
<asp:TextBox ID="txtEndDate" runat="server" TextMode="Date"></asp:TextBox>

</p>

<asp:Button ID="btnTransactionHistory" runat="server" BackColor="#33CC33" BorderColor="#00CC00" ForeColor="White" Height="31px" OnClick="btnTransactionHistory_Click" OnClientClick="target = '_blank'" Style="margin-left: 184px" Text="Show Transaction History" Width="199px" />
</div>
</div>
<CR:CrystalReportViewer ID="cryslRptVwrTransactionHistoryAccountant" runat="server" AutoDataBind="true" />
</form>
</body>
</html>

web.config
文件

<?xml version="1.0"?>
<configuration>
   <configSections>
       <section name="entityFramework" 
                type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
    </configSections>
    <connectionStrings>
        <add name="AAAAA" connectionString="Data Source=AAA; Initial Catalog=AAAA; Connect Timeout=60; Integrated Security=SSPI;"
providerName="System.Data.SqlClient" />
        <add name="AAA" connectionString="metadata=res://*/AAAA.AAA.csdl|res://*/CashFlowDB.CashFlowDB.ssdl|res://*/AAAAA.msl;provider=System.Data.SqlClient;provider connection string="data source=AAAA;initial catalog=AAA;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
        <add name="AAAA.Properties.Settings.connection" AAAA="Data Source=AAAA; Initial Catalog=AAAA; Connect Timeout=60; Integrated Security=false;User ID=sa;Password=#AAAAAAA" />
    </connectionStrings>
    <appSettings>
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
        <add key="CrystalImageCleaner-AutoStart" value="true" />
        <add key="CrystalImageCleaner-Sleep" value="60000" />
        <add key="CrystalImageCleaner-Age" value="120000" />
    </appSettings>
    <system.web>
        <authentication mode="None"/>
        <compilation debug="true" targetFramework="4.7.2">
            <assemblies>
                <add assembly="CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
                <add assembly="log4net, Version=2.0.12.0,  Culture=neutral, PublicKeyToken=669E0DDF0BB1AA2A"/>
                <add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
                <add assembly="CrystalDecisions.ReportAppServer.DataDefModel, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
               <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
               <add assembly="CrystalDecisions.Shared, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
               <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.7.2"/>
        <httpHandlers>
            <add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        </httpHandlers>
    </system.web>
    <system.webServer>
        <modules>
            <remove name="FormsAuthentication"/>
        </modules>
        <handlers>
            <add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode"/>
        </handlers>
        <validation validateIntegratedModeConfiguration="false"/>     
    </system.webServer>
asp.net webforms crystal-reports visual-studio-2019 iis-10
© www.soinside.com 2019 - 2024. All rights reserved.