将byte []作为参数传递给ReportViewer

时间:2013-09-09 13:04:29

标签: c# sql sql-server winforms

您好我有这行代码从Sql Database加载图像:

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的Image中,我希望可以这样做。如果不是,请你告诉我最好的方法吗?

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

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

你应该使用其中一个。

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

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