2016-09-19 3 views
0

У меня есть задача отображения информации с помощью asp.net, которая требует строковых полей, которые я легко реализую, и изображения, которое нужно использовать вместе с информацией. Я попытался использовать поле изображения в своем gridview, чтобы отобразить изображение, которое хорошо работало для изображений, где у меня есть URL-адрес, чтобы идти вместе с ними. Однако я пытался выяснить способ отображения изображения, которое хранится в виде строки base64. Я пробовал всевозможные способы попробовать и отобразить изображение, например, используя поле шаблона, пытаясь установить URL-адрес изображения в строку, которая будет отображать base64 в html, и даже преобразовать base64 в изображение, которое не похоже, работают. Прямо сейчас я пытаюсь просто добавлять данные вручную, используя данные и создавать строки вручную. Если кто-нибудь знает, как я могу использовать строки base64 в представлении изображения, я бы очень признателен.Отображение Base64 String в ASP.Net 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#, который у меня есть сейчас, чтобы создать запись в gridview.

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

Невероятно Hacky, но это работает:

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> 

Code-за:

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

По какой-то причине, когда я пытался использовать такой код этого URL = $ ""; строка продолжает давать мне неожиданный символ «$», «Недействительный термин выражения» и ожидаемые ошибки. Не совсем уверен, почему, поскольку я проверял и все, кажется, в порядке. У меня также возникают проблемы с GridView1, не существующим в текущей контекст, когда я пытаюсь показать таблицу где-то еще в коде. – Ramirez77

+0

Попробуйте это вместо: 'URL =" ";' –

+0

Спасибо, что сработало отлично, и да, это своего рода хакки, но эй, я ударил головой о стены на несколько дней, чтобы понять это. – Ramirez77

Смежные вопросы