0

GridView支払いに関する詳細を含むいくつかの列を含む があります。Crystal Reports を使用して、特定の行を選択し、印刷ボタンをクリックすると対応する行のレポートを取得できるようにレポートを作成したいと考えています。

4

1 に答える 1

0

それほど難しくありません。私はしばしば人々にhttp://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-string-parameter.htmを紹介します

基本的に、payment_id (または何らかの形式の「主キー」) を取得するパラメーターを使用して Crystal Report を作成し、次のように印刷ボタンを設定します。

using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ReportDocument cryRpt = new ReportDocument();
            cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");

            ParameterFieldDefinitions crParameterFieldDefinitions ;
            ParameterFieldDefinition crParameterFieldDefinition ;
            ParameterValues crParameterValues = new ParameterValues();
            ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

            crParameterDiscreteValue.Value = dataGridView1.SelectedRows[0].Cells["payment_id"].Value.ToString();;
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition = crParameterFieldDefinitions["payment_id"];
            crParameterValues = crParameterFieldDefinition.CurrentValues;

            crParameterValues.Clear();
            crParameterValues.Add(crParameterDiscreteValue);
            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

            crystalReportViewer1.ReportSource = cryRpt;
            crystalReportViewer1.Refresh(); 

        }
    }
}
于 2012-11-17T09:29:06.020 に答える