将 byte[] 作为参数传递给报表查看器

本文关键字:报表 参数传递 byte | 更新日期: 2023-09-27 18:30:37

您好,我有这行代码从 Sql 数据库加载图像:

MemoryStream mem;
    void zobraz_logo()
    {
        try
        {
            SqlDataAdapter dataAdapter = new SqlDataAdapter(new SqlCommand("SELECT logo FROM firma WHERE id = 1", spojeni));
            DataSet dataSet = new DataSet();

            dataAdapter.Fill(dataSet);

            if (dataSet.Tables[0].Rows.Count == 1)
            {
                Byte[] data = new Byte[0];
                data = (Byte[])(dataSet.Tables[0].Rows[0]["logo"]);
                 mem = new MemoryStream(data);
            }
        }
        catch (Exception)
        {
            MessageBox.Show("");
        }
    }

现在我尝试将其作为参数传递给ReportViewer:

eportParameter[] parameter = new ReportParameter[18];
            parameter[18] = new ReportParameter("rp_logo", Image.FromStream(mem)); // this is the issue line

            this.firmaTableAdapter.Fill(this.dataset_voucher.firma);
            this.zajezdTableAdapter.Fill(this.dataset_voucher.zajezd,vybrana_akce,klientClass.Rocnik());

            this.reportViewer1.LocalReport.SetParameters(parameter);
            this.reportViewer1.RefreshReport();

        }

我正在尝试将图像作为参数加载到ReportViewer的图像中,我希望可以这样做。如果没有,请您向我提出最好的方法吗?

在提到的行上,我收到错误:Argument 2:cannot convert from System.Drawing.Image to String[]

谢谢你的时间。

将 byte[] 作为参数传递给报表查看器

我从未使用过报表查看器,但在 Crystal 报表中,您将参数/字段创建为对象类型,并将byte[]传递给该参数/字段。

很好,正如您在MSDN中看到的那样,您可以看到接受字符串,字符串数组和布尔值ReportParameter

您应该使用其中之一。

我不知道图像的用途,但您可以在报告中使用它的路径

parameter[18] = new ReportParameter("rp_logo", new string[]{dataImage});