如何在RDLC报告上显示数据库中的图像

时间:2017-08-30 11:25:53

标签: c# asp.net reporting-services rdlc

我的RDLC设计:

http://imgur.com/a/dglzS

我想从我的数据库中显示我的报告查看器上的图像我的reportviewer工作正常我只需要每个选择的图像我已经在我的数据库中为每个患者提供了图像我只想在我的.aspx中显示第一页我还附上了以下代码。

我的Aspx页面:

<body >
 <form id="form1" runat="server">
    <div class="auto-style1">
      <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
          <table class="auto-style2">
            <tr>
              <td class="auto-style5">  &nbsp;&nbsp;
             <asp:Label ID="Label1" runat="server" CssClass="auto-style4" 
           Text="Patient Report"></asp:Label>
       <asp:DropDownList ID="DropDownPat" runat="server" Height="16px"  
  Width="157px" AutoPostBack="True" 
 OnSelectedIndexChanged="DropDownPat_SelectedIndexChanged">
 <asp:ListItem></asp:ListItem>
 </asp:DropDownList>
</tr>
 <tr>
   <td class="auto-style3">
     <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" Height="205px" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="751px">
       <LocalReport ReportPath="Report1.rdlc">
         <DataSources>
            <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
        </DataSources>
       </LocalReport>
      </rsweb:ReportViewer>
     <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData" TypeName="MedImage.DataSet1TableAdapters.DataTable1TableAdapter"></asp:ObjectDataSource>
          </td>
         </tr>            
        </table>    
    </div>
    </form>
</body>

我的.cs文件: 我想在数据库中的报表查看器上显示图像

aspx页面后面的代码在这里

public partial class PatientReport : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {                
            if (!IsPostBack)
            {             
                populateDropDownPat();
            }
        } 
        private void populateDropDownPat()
        {
          try
            {
             patientCollection pcal = (new patientBAL()).GetAllDetailspatient();
                DropDownPat.DataSource = null;
                DropDownPat.DataSource = pcal;
                DropDownPat.DataTextField = "patientName";
                DropDownPat.DataValueField = "PatientID";
                DropDownPat.DataBind();
                DropDownPat.Items.Insert(0, new ListItem("--Select Patient--"));
            }
            catch(Exception ex)
            {
            }        
        }
     protected void DropDownPat_SelectedIndexChanged(object sender, EventArgs e)
        {
          string name = DropDownPat.SelectedItem.Text;
          patientCollection pcal = (new 
          patientBAL()).GetDetailsByPatientName(name);
          ReportViewer1.Visible = true;
          this.ReportViewer1.LocalReport.EnableExternalImages = true;
          this.ReportViewer1.LocalReport.ReportPath = "Report1.rdlc";
          ReportViewer1.LocalReport.DataSources.Clear();
          ReportDataSource rds = new ReportDataSource("DataSet1", pcal);
          this.ReportViewer1.LocalReport.DataSources.Add(rds);
         this.ReportViewer1.LocalReport.Refresh(); 
        }
    }

2 个答案:

答案 0 :(得分:0)

从数据库中显示图像非常容易。 在image属性上,将源设置为数据库,将值设置为包含byte []图像的数据集字段。

enter image description here

答案 1 :(得分:0)

用于存储Image的数据类型:

varbinary(MAX)

byte[] bytes;
        using (BinaryReader br = new BinaryReader(photo.PostedFile.InputStream))
        {
            bytes = br.ReadBytes(photo.PostedFile.ContentLength);
        }

        SqlCommand cmd = new SqlCommand("insert into img values('@harikesh')", cn);
        cn.Open();
        cmd.Parameters.AddWithValue("@harikesh", bytes);
        int i = cmd.ExecuteNonQuery();
        if (i > 0)
        {
            Response.Write("<script language='javascript'>alert('inserted sucess')</script>");
        }
        else
        {
            Response.Write("<script language='javascript'>alert('NOT sucess')</script>");
        }

        cn.Close();`

------------在报告视图上查看图像---------------

.xsd文件System.Byte[]中的图像数据类型