Default.aspx.vb
Imports Bytescout.BarCode Partial Class _Default Inherits System.Web.UI.Page Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load ' Fill the datasource from DB Dim ta As New AdventureWorksTableAdapters.vProductAndDescriptionTableAdapter() Dim dt As New AdventureWorks.vProductAndDescriptionDataTable() ta.Fill(dt) ' Create and setup an instance of Bytescout Barcode SDK Dim bc As New Barcode(SymbologyType.Code128) bc.RegistrationName = "demo" bc.RegistrationKey = "demo" bc.DrawCaption = False ' Update DataTable with barcode image Dim row As AdventureWorks.vProductAndDescriptionRow For Each row In dt.Rows ' Set the value to encode bc.Value = row.ProductID.ToString() 'Generate the barcode image and store it into the Barcode Column row.Barcode = bc.GetImageBytesPNG() Next 'Create Report Data Source Dim rptDataSource As New Microsoft.Reporting.WebForms.ReportDataSource("AdventureWorks_vProductAndDescription", dt) Me.ReportViewer1.LocalReport.DataSources.Add(rptDataSource) Me.ReportViewer1.LocalReport.ReportPath = Server.MapPath("BarcodeReport.rdlc") Me.ReportViewer1.LocalReport.Refresh() End Sub End Class
Default.aspx.cs
using System; using Bytescout.BarCode; using Microsoft.Reporting.WebForms; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Fill the datasource from DB AdventureWorksTableAdapters.vProductAndDescriptionTableAdapter ta = new AdventureWorksTableAdapters.vProductAndDescriptionTableAdapter(); AdventureWorks.vProductAndDescriptionDataTable dt = new AdventureWorks.vProductAndDescriptionDataTable(); ta.Fill(dt); Barcode bc = new Barcode(SymbologyType.Code128); bc.RegistrationName = "demo"; bc.RegistrationKey = "demo"; bc.DrawCaption = false; // Update DataTable with barcode image foreach (AdventureWorks.vProductAndDescriptionRow row in dt.Rows) { // Set the value to encode bc.Value = row.ProductID.ToString(); // Generate the barcode image and store it into the Barcode Column row.Barcode = bc.GetImageBytesPNG(); } // Create Report Data Source Microsoft.Reporting.WebForms.ReportDataSource rptDataSource = new ReportDataSource("AdventureWorks_vProductAndDescription", dt); ReportViewer1.LocalReport.DataSources.Add(rptDataSource); ReportViewer1.LocalReport.ReportPath = Server.MapPath("BarcodeReport.rdlc"); ReportViewer1.LocalReport.Refresh(); } }
web.config
<?xml version="1.0"?> <!-- Note: As an alternative to hand editing this file you can use the web admin tool to configure settings for your application. Use the Website->Asp.Net Configuration option in Visual Studio. A full list of settings and comments can be found in machine.config.comments usually located in \Windows\Microsoft.Net\Framework\v2.x\Config --> <configuration> <appSettings/> <connectionStrings> <add name="AdventureWorksConnectionString" connectionString="Data Source=STARKOV\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <!-- Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development. --> <httpHandlers> <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" /> </httpHandlers> <compilation debug="true"> <assemblies> <add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> </assemblies> <buildProviders> <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </buildProviders> </compilation> <!-- The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. --> <authentication mode="Windows"/> <!-- The <customErrors> section enables configuration of what to do if/when an unhandled error occurs during the execution of a request. Specifically, it enables developers to configure html error pages to be displayed in place of a error stack trace. <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> </system.web> </configuration>
web.config
<?xml version="1.0"?> <!-- Note: As an alternative to hand editing this file you can use the web admin tool to configure settings for your application. Use the Website->Asp.Net Configuration option in Visual Studio. A full list of settings and comments can be found in machine.config.comments usually located in \Windows\Microsoft.Net\Framework\v2.x\Config --> <configuration> <appSettings/> <connectionStrings> <add name="AdventureWorksConnectionString" connectionString="Data Source=STARKOV\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <!-- Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development. Visual Basic options: Set strict="true" to disallow all data type conversions where data loss can occur. Set explicit="true" to force declaration of all variables. --> <compilation debug="false" strict="false" explicit="true"> </compilation> <pages> <namespaces> <clear /> <add namespace="System" /> <add namespace="System.Collections" /> <add namespace="System.Collections.Generic" /> <add namespace="System.Collections.Specialized" /> <add namespace="System.Configuration" /> <add namespace="System.Text" /> <add namespace="System.Text.RegularExpressions" /> <add namespace="System.Web" /> <add namespace="System.Web.Caching" /> <add namespace="System.Web.SessionState" /> <add namespace="System.Web.Security" /> <add namespace="System.Web.Profile" /> <add namespace="System.Web.UI" /> <add namespace="System.Web.UI.WebControls" /> <add namespace="System.Web.UI.WebControls.WebParts" /> <add namespace="System.Web.UI.HtmlControls" /> </namespaces> </pages> <!-- The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. --> <authentication mode="Windows" /> <!-- The <customErrors> section enables configuration of what to do if/when an unhandled error occurs during the execution of a request. Specifically, it enables developers to configure html error pages to be displayed in place of a error stack trace. <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> </system.web> </configuration>
AdventureWorks.xsd
<?xml version="1.0" encoding="utf-8"?> <xs:schema id="AdventureWorks" targetNamespace="http://tempuri.org/AdventureWorks.xsd" xmlns:mstns="http://tempuri.org/AdventureWorks.xsd" xmlns="http://tempuri.org/AdventureWorks.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:annotation> <xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource"> <DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource"> <Connections> <Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="AdventureWorksConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="AdventureWorksConnectionString (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration.ConfigurationManager.0.ConnectionStrings.AdventureWorksConnectionString.ConnectionString" Provider="System.Data.SqlClient" /> </Connections> <Tables> <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="vProductAndDescriptionTableAdapter" GeneratorDataComponentClassName="vProductAndDescriptionTableAdapter" Name="vProductAndDescription" UserDataComponentName="vProductAndDescriptionTableAdapter"> <MainSource> <DbSource ConnectionRef="AdventureWorksConnectionString (Web.config)" DbObjectName="AdventureWorks.Production.vProductAndDescription" DbObjectType="View" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill"> <SelectCommand> <DbCommand CommandType="Text" ModifiedByUser="true"> <CommandText>SELECT ProductID, Name, ProductModel FROM Production.vProductAndDescription WHERE (CultureID = N'en')</CommandText> <Parameters /> </DbCommand> </SelectCommand> </DbSource> </MainSource> <Mappings> <Mapping SourceColumn="ProductID" DataSetColumn="ProductID" /> <Mapping SourceColumn="Name" DataSetColumn="Name" /> <Mapping SourceColumn="ProductModel" DataSetColumn="ProductModel" /> </Mappings> <Sources /> </TableAdapter> </Tables> <Sources /> </DataSource> </xs:appinfo> </xs:annotation> <xs:element name="AdventureWorks" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="AdventureWorks" msprop:Generator_DataSetName="AdventureWorks"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="vProductAndDescription" msprop:Generator_UserTableName="vProductAndDescription" msprop:Generator_RowDeletedName="vProductAndDescriptionRowDeleted" msprop:Generator_TableClassName="vProductAndDescriptionDataTable" msprop:Generator_RowChangedName="vProductAndDescriptionRowChanged" msprop:Generator_RowClassName="vProductAndDescriptionRow" msprop:Generator_RowChangingName="vProductAndDescriptionRowChanging" msprop:Generator_RowEvArgName="vProductAndDescriptionRowChangeEvent" msprop:Generator_RowEvHandlerName="vProductAndDescriptionRowChangeEventHandler" msprop:Generator_TablePropName="vProductAndDescription" msprop:Generator_TableVarName="tablevProductAndDescription" msprop:Generator_RowDeletingName="vProductAndDescriptionRowDeleting"> <xs:complexType> <xs:sequence> <xs:element name="ProductID" msprop:Generator_UserColumnName="ProductID" msprop:Generator_ColumnPropNameInRow="ProductID" msprop:Generator_ColumnVarNameInTable="columnProductID" msprop:Generator_ColumnPropNameInTable="ProductIDColumn" type="xs:int" /> <xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInTable="NameColumn"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="50" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="ProductModel" msprop:Generator_UserColumnName="ProductModel" msprop:Generator_ColumnPropNameInRow="ProductModel" msprop:Generator_ColumnVarNameInTable="columnProductModel" msprop:Generator_ColumnPropNameInTable="ProductModelColumn"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="50" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Barcode" msprop:Generator_UserColumnName="Barcode" msprop:Generator_ColumnPropNameInRow="Barcode" msprop:Generator_ColumnVarNameInTable="columnBarcode" msprop:Generator_ColumnPropNameInTable="BarcodeColumn" type="xs:base64Binary" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:vProductAndDescription" /> <xs:field xpath="mstns:ProductID" /> </xs:unique> </xs:element> </xs:schema>
AdventureWorks.xsd
<?xml version="1.0" encoding="utf-8"?> <xs:schema id="AdventureWorks" targetNamespace="http://tempuri.org/AdventureWorks.xsd" xmlns:mstns="http://tempuri.org/AdventureWorks.xsd" xmlns="http://tempuri.org/AdventureWorks.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:annotation> <xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource"> <DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource"> <Connections> <Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="AdventureWorksConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="AdventureWorksConnectionString (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration.ConfigurationManager.0.ConnectionStrings.AdventureWorksConnectionString.ConnectionString" Provider="System.Data.SqlClient" /> </Connections> <Tables> <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="vProductAndDescriptionTableAdapter" GeneratorDataComponentClassName="vProductAndDescriptionTableAdapter" Name="vProductAndDescription" UserDataComponentName="vProductAndDescriptionTableAdapter"> <MainSource> <DbSource ConnectionRef="AdventureWorksConnectionString (Web.config)" DbObjectName="AdventureWorks.Production.vProductAndDescription" DbObjectType="View" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill"> <SelectCommand> <DbCommand CommandType="Text" ModifiedByUser="true"> <CommandText>SELECT ProductID, Name, ProductModel FROM Production.vProductAndDescription WHERE (CultureID = N'en')</CommandText> <Parameters /> </DbCommand> </SelectCommand> </DbSource> </MainSource> <Mappings> <Mapping SourceColumn="ProductID" DataSetColumn="ProductID" /> <Mapping SourceColumn="Name" DataSetColumn="Name" /> <Mapping SourceColumn="ProductModel" DataSetColumn="ProductModel" /> </Mappings> <Sources /> </TableAdapter> </Tables> <Sources /> </DataSource> </xs:appinfo> </xs:annotation> <xs:element name="AdventureWorks" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="AdventureWorks" msprop:Generator_DataSetName="AdventureWorks"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="vProductAndDescription" msprop:Generator_UserTableName="vProductAndDescription" msprop:Generator_RowDeletedName="vProductAndDescriptionRowDeleted" msprop:Generator_TableClassName="vProductAndDescriptionDataTable" msprop:Generator_RowChangedName="vProductAndDescriptionRowChanged" msprop:Generator_RowClassName="vProductAndDescriptionRow" msprop:Generator_RowChangingName="vProductAndDescriptionRowChanging" msprop:Generator_RowEvArgName="vProductAndDescriptionRowChangeEvent" msprop:Generator_RowEvHandlerName="vProductAndDescriptionRowChangeEventHandler" msprop:Generator_TablePropName="vProductAndDescription" msprop:Generator_TableVarName="tablevProductAndDescription" msprop:Generator_RowDeletingName="vProductAndDescriptionRowDeleting"> <xs:complexType> <xs:sequence> <xs:element name="ProductID" msprop:Generator_UserColumnName="ProductID" msprop:Generator_ColumnPropNameInRow="ProductID" msprop:Generator_ColumnVarNameInTable="columnProductID" msprop:Generator_ColumnPropNameInTable="ProductIDColumn" type="xs:int" /> <xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInTable="NameColumn"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="50" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="ProductModel" msprop:Generator_UserColumnName="ProductModel" msprop:Generator_ColumnPropNameInRow="ProductModel" msprop:Generator_ColumnVarNameInTable="columnProductModel" msprop:Generator_ColumnPropNameInTable="ProductModelColumn"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="50" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Barcode" msprop:Generator_UserColumnName="Barcode" msprop:Generator_ColumnPropNameInRow="Barcode" msprop:Generator_ColumnVarNameInTable="columnBarcode" msprop:Generator_ColumnPropNameInTable="BarcodeColumn" type="xs:base64Binary" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:vProductAndDescription" /> <xs:field xpath="mstns:ProductID" /> </xs:unique> </xs:element> </xs:schema>