2013-01-08 1 views
4

안녕하세요 저는 사진을 업로드 할 수있는 페이지가 있습니다. 그런 다음 업로드를 클릭하면 사진이 승인되었습니다. 하지만 내가 gridview에 표시하고 싶습니다. 이미지가 표시되어야하는 열은 이미지 대신 System.Byte []를 제공합니다. 도움말 :System.Byte []가 이미지 대신 gridview에 표시됩니까?

여기 내 코드입니다 :

<%@ Page Language="C#" Debug="true" %> 
<%@ Import Namespace="System" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace = "System.Data.SqlClient" %> 
<%@ Import Namespace= "System.Data.OleDb" %> 


<script runat="server" type="text/c#"> 
protected void btnUpload_Click(object sender, EventArgs e) 


{ 
    { 
    byte[] imageSize = new byte 
       [FileUpload1.PostedFile.ContentLength]; 
    HttpPostedFile uploadedImage = FileUpload1.PostedFile; 
    uploadedImage.InputStream.Read 
    (imageSize, 0, (int)FileUpload1.PostedFile.ContentLength); 
// Create SQL Connection 
    OleDbConnection con = new OleDbConnection(); 
    con.ConnectionString = ConfigurationManager.ConnectionStrings["recordsConnectionString"].ConnectionString; 
// Create SQL Command 
OleDbCommand cmd = new OleDbCommand(); 
cmd.CommandText = "INSERT INTO PendingRecords([Image])" + " VALUES (@Image)"; 
cmd.CommandType = CommandType.Text; 
cmd.Connection = con; 

OleDbParameter UploadedImage = new OleDbParameter 
       ("@Image", OleDbType.VarBinary, imageSize.Length); 

UploadedImage.Value = imageSize; 
cmd.Parameters.Add(UploadedImage); 
con.Open(); 
cmd.ExecuteNonQuery(); 
GridView1.DataSourceID = ""; 
GridView1.DataSource = SqlDataSource1; 
GridView1.DataBind(); 
con.Close(); 
} 
} 
</script> 

<form id="form1" runat="server"> 
<div> 
<asp:FileUpload ID="FileUpload1" runat="server"/> 
<asp:Label ID="lblMessage" runat="server"> 
</asp:Label> 
<asp:Button ID="btnUpload" runat="server" 
      OnClick="btnUpload_Click" Text="Upload"/> 
</div> 
<asp:GridView runat="server" id="GridView1" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="ID"> 
     <Columns> 
      <asp:boundfield DataField="ID" HeaderText="ID" ReadOnly="True" InsertVisible="False" SortExpression="ID"> 
      </asp:boundfield> 
      <asp:boundfield DataField="Image" DataFormatString="{0}" HeaderText="Image" SortExpression="Image"> 
      </asp:boundfield> 
      <asp:boundfield DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName"> 
      </asp:boundfield> 
     </Columns> 
</asp:GridView> 
<asp:SqlDataSource runat="server" id="SqlDataSource1" ProviderName="<%$ ConnectionStrings:recordsConnectionString.ProviderName %>" ConnectionString="<%$ ConnectionStrings:recordsConnectionString %>" SelectCommand="SELECT * FROM [PendingRecords]" DeleteCommand="DELETE FROM [PendingRecords] WHERE [ID] = ?" InsertCommand="INSERT INTO [PendingRecords] ([Username], [Password], [FirstName], [LastName], [MiddleName], [Address], [Gender], [ContactNumber], [PlateNumber], [Color], [Brand], [LiscensedNumber]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" UpdateCommand="UPDATE [PendingRecords] SET [Username] = ?, [Password] = ?, [FirstName] = ?, [LastName] = ?, [MiddleName] = ?, [Address] = ?, [Gender] = ?, [ContactNumber] = ?, [PlateNumber] = ?, [Color] = ?, [Brand] = ?, [LiscensedNumber] = ? WHERE [ID] = ?"> 
    <DeleteParameters> 
     <asp:parameter Name="ID" Type="Int32" /> 
    </DeleteParameters> 
    <UpdateParameters> 
     <asp:parameter Name="Username" Type="String" /> 
     <asp:parameter Name="Password" Type="String" /> 
     <asp:parameter Name="FirstName" Type="String" /> 
     <asp:parameter Name="LastName" Type="String" /> 
     <asp:parameter Name="MiddleName" Type="String" /> 
     <asp:parameter Name="Address" Type="String" /> 
     <asp:parameter Name="Gender" Type="String" /> 
     <asp:parameter Name="ContactNumber" Type="String" /> 
     <asp:parameter Name="PlateNumber" Type="String" /> 
     <asp:parameter Name="Color" Type="String" /> 
     <asp:parameter Name="Brand" Type="String" /> 
     <asp:parameter Name="LiscensedNumber" Type="String" /> 
     <asp:parameter Name="ID" Type="Int32" /> 
    </UpdateParameters> 
    <InsertParameters> 
     <asp:parameter Name="Username" Type="String" /> 
     <asp:parameter Name="Password" Type="String" /> 
     <asp:parameter Name="FirstName" Type="String" /> 
     <asp:parameter Name="LastName" Type="String" /> 
     <asp:parameter Name="MiddleName" Type="String" /> 
     <asp:parameter Name="Address" Type="String" /> 
     <asp:parameter Name="Gender" Type="String" /> 
     <asp:parameter Name="ContactNumber" Type="String" /> 
     <asp:parameter Name="PlateNumber" Type="String" /> 
     <asp:parameter Name="Color" Type="String" /> 
     <asp:parameter Name="Brand" Type="String" /> 
     <asp:parameter Name="LiscensedNumber" Type="String" /> 
    </InsertParameters> 
</asp:SqlDataSource> 
</form> 
+1

이미지가 아닙니다. 그것은'byte []'입니다! 데이터를 읽은 바이트 배열이 이미지로 표시된다는 것을 시스템에서 알 수 있다고 기대할 수는 없습니다. –

답변

9

내가 많은 변화를 요구하지 않을 것이다 당신을위한 작은 해결책을 가지고 있습니다. 조금 지저분한 IMHO.

이미지 바운드 필드를이 템플릿 필드 아래에 바꿉니다.

<asp:TemplateField> 
      <HeaderTemplate>Image</HeaderTemplate> 
      <ItemTemplate> 
       <img src='data:image/jpg;base64,<%# Eval("Image") != System.DBNull.Value ? Convert.ToBase64String((byte[])Eval("Image")) : string.Empty %>' alt="image" height="100" width="200"/> 
      </ItemTemplate> 
     </asp:TemplateField> 
+0

답장을 보내 주셔서 감사합니다 ... 오류 : 'System.Binary []'입력하려면 'System.DBNull'형식의 개체를 캐스팅 할 수 없습니다. ?? 이 라인에서 image

+0

괜찮아요 :) –

+0

은 "img src"가 정말로 필요합니까? 메신저가 사진을 업로드했기 때문에 ... 기본 위치에 설정하지 않았습니까? 나는 너무 정확하게 LOL이라고 생각하지 않는다 :)) –