2016-09-19 147 views
0

我有使用asp.net顯示信息的任務,它需要字符串字段(我很容易實現)以及圖像隨信息一起顯示。我試圖在我的GridView中使用圖像字段來顯示一個圖片,這對圖片有效,我有一個URL與他們一起去。不過,我一直在試圖找出一種方法來顯示存儲爲base64字符串的圖像。我嘗試過各種方式來嘗試和顯示圖像,例如使用模板字段,試圖將圖像URL設置爲將在html中顯示base64的字符串,甚至將base64轉換爲沒有圖像的圖像似乎工作。現在我正在嘗試使用數據表手動添加數據並手動創建行。如果任何人有任何想法如何在圖像視圖中使用base64字符串,我將不勝感激。在ASP.Net中顯示Base64字符串Gridview

這裏是我創建的gridview的代碼。

<asp:GridView ID="GridView1" HeaderStyle-BackColor="#FF0000" HeaderStyle-ForeColor="White" 
     runat="server" AutoGenerateColumns="false" enabled="false"> 
     <Columns> 
      <asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-Width="30" /> 
      <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="30" /> 
      <asp:BoundField DataField="Account" HeaderText="Account Number" ItemStyle-Width="30" /> 
      <asp:ImageField DataImageURLField="ImageURL" HeaderText="Image" /> 
     </Columns> 
</asp:GridView> 

這裏是我現在在c#中創建一個條目的c#代碼。

DataTable dt = new DataTable(); 
     dt.Columns.AddRange(new DataColumn[4] { new DataColumn("Id", typeof(int)), 
         new DataColumn("Name", typeof(string)), 
         new DataColumn("Account",typeof(string)), 
         new DataColumn("ImageURL",typeof(string))}); 

     string URL = "data:image/jpg;base64,"; 

     string encodedString = //base64 string here 


     URL += encodedString; 

     dt.Rows.Add(1, "Steve", "************1111", URL); 

     GridView1.DataSource = dt; 
     GridView1.DataBind(); 

回答

0

令人難以置信的是哈克,但它的工作原理:

GridView控件:

<asp:GridView ID="GridView1" HeaderStyle-BackColor="#FF0000" HeaderStyle-ForeColor="White" 
    DataSource='<%# GetData() %>' runat="server" AutoGenerateColumns="false" enabled="false"> 
    <Columns> 
     <asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-Width="30" /> 
     <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="30" /> 
     <asp:BoundField DataField="Account" HeaderText="Account Number" ItemStyle-Width="30" /> 
     <asp:BoundField DataField="ImageURL" HeaderText="Image" HtmlEncode="false" /> 
    </Columns> 
</asp:GridView> 

代碼隱藏:

public DataTable GetData() 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.AddRange(new DataColumn[4] { new DataColumn("Id", typeof(int)), 
       new DataColumn("Name", typeof(string)), 
       new DataColumn("Account",typeof(string)), 
       new DataColumn("ImageURL",typeof(string))}); 

    string URL = "data:image/jpeg;base64,"; 

    string encodedString = ""; // base64-encoded image data goes here 

    URL += encodedString; 

    URL = $"<img src=\"{URL}\">"; 

    DataRow dr = dt.NewRow(); 

    dr["ID"] = 1; 
    dr["Name"] = "Steve"; 
    dr["Account"] = "************1111"; 
    dr["ImageUrl"] = URL; 

    dt.Rows.Add(dr); 

    return dt; 
} 
+0

出於某種原因,當我試圖用這樣的代碼的網址= $「」;一直給我一個意想不到的字符'$',無效的表達式術語「,和;預期的錯誤不太清楚爲什麼,因爲我一直在檢查,一切似乎是爲了我也有問題GridView1不存在當前我嘗試在代碼中的其他地方顯示錶格 – Ramirez77

+0

試試這個:'URL =「」;' –

+0

謝謝你的工作完美,是啊這是有點hacky,但嘿我一直在抨擊我的頭反對牆壁了幾天才能發現。 – Ramirez77