1

首先,我想描述一下我现在的情况。我有一个 RDLC,其数据是使用存储过程“sp”从数据集“ds”中获取的。可以说,从“ds”我可以得到一个名为“bar_code”的字符串类型字段,然后可以在占位符中使用 3of9 字体来生成条形码。

现在,我想获得相同的结果,但使用另一种方法,给定一个字符串,将返回 BMP 或 JPEG 格式的条形码图像。此方法已在http://www.techrepublic.com/blog/howdoi/how-do-i-generate-barcodes-using-c/173中进行了描述。

我的问题:是否可以在 (.aspx.cs) 后面的 ReportViewer 代码中编写方法?如果可能的话,我如何将“bar_code”传递给这个方法,然后将结果(JPEG 或 BMP)嵌入到 RDLC 中?

4

4 回答 4

2

我找到了答案。我们可以通过在代码隐藏中调用 DataSetTableAdapter 从存储过程中获取我们想要转换为图像的值,将其填充为任何所需的参数,然后将结果存储在 DataTable 中。之后,我们遍历每一行并将获得的值传递给生成 BMP 条形码的方法。关键是我们必须将此 BMP 存储在 System.Byte[] 类型的列中,因此我们在 DataTable 中添加一个具有该类型的新列。如果我们将它存储在 System.Object 中,它将无法工作。使用 MemoryStream 将图像保存到 Byte[] :

内存流毫秒 = 新的内存流();image_result.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

然后,将我们的 RDLC 数据源设置为使用该新数据表,并在我们的 RDLC 中按图像类型添加一个占位符。

于 2012-07-05T11:57:37.890 回答
1

您可以使用 Barcode.dll条码组件,它支持 RDLC 报告(web 和 windows)。

您只需要一种简单的方法来 RDLC 代码选项卡:

  1. 在设计模式下打开 Report.rdlc,从灰色字段的上下文菜单中选择“属性”:看一下“References”选项卡,那里引用了 Barcode.dll,并实例化了 BarcodeFactory。湾。请注意,必须在 GAC 中注册 Barcode.dll - 安装程序会这样做。C。看一下“代码”选项卡,那里定义了 GetBarcode128 方法。

  2. 看一下“ID”文本下方的 Image 控件,注意它的属性: MimeType "image/png" Source "DataBase" Value "=Code.GetBarcode128(Fields!Name.Value)"

下载包包括 RDLC 示例。

于 2012-07-05T14:57:07.007 回答
0

您引用的那篇文章包含有关如何从 aspx 生成条形码的信息。

缺少一小部分:您使用“BarcodeGenerator.aspx?data=11111111”链接作为<img>html 中节点的“src”。

顺便说一句:在这种情况下,“gif”比“jpg”好:jpg 会导致不需要的伪影,使条形码难以扫描。“bmp”通常太大。

于 2012-07-05T09:15:17.473 回答
0

您可以将图像存储在数据集中的 byte[] 字段中,并使用 rdlc 报告上的图像控件显示该图像

另一种选择是创建一个新参数并以这种方式传递它。

如果它进入页脚的页眉,还有其他问题需要处理。那么您需要使用 =Convert.ToBase64String(First(Fields!BarcodeImage.Value, "DataSet Name")) 将其存储在文本框中,然后使用 Convert.FromBase64String(ReportItems!NameOfYourTextBox.Value) 将其显示在图像中

另请参阅http://www.codeproject.com/Articles/2434/Drawing-Barcodes-in-Windows-Part-1-Code-39了解如何生成图像。

我已经使用它并将图像作为流返回并将该流放入我的 byte[] 列(或作为参数传递)以在报告上打印

于 2013-07-25T19:52:33.807 回答