2015-04-14 2 views
0

Я создаю веб-приложение ASP.Net, в котором есть база данных Microsoft Access. В базе данных у меня есть таблица с именем items. одним из его столбцов является image - это визуальное представление элемента, являющегося гиперссылкой на изображение на компьютере базы данных.Вывод изображения из базы данных acess в GridView

У меня есть два вопроса:

Прежде всего, это плохой дизайн? вы бы скорее сохранили изображение в базе данных? Если да, как бы вы это сделали?

Второй, как я могу представить изображение, сохраненное таким образом в gridView?

Я пробовал следующее на C#;

Заполнение набора данных с OleDbCommand:

SELECT ItemName as Name,ItemPicture as Picture...

И установить его в качестве источника GridView, но, к сожалению, он просто написал гиперссылку в сетке: 1.jpg#1.jpg# вместо того, чтобы показывать изображение ,

Как вы это сделаете?

+0

Вы должны связать SRC к IMG. – Mairaj

+0

Можете ли вы привести пример того, что на самом деле хранится в поле изображения? Это путь к изображению? Полностью сформированная гиперссылка html? Или это бинарный объект? – fnostro

+0

@fnostro Что хранится в базе данных, это путь к изображению. Я хочу иметь реальную картинку (не ссылку на нее) в сетке. –

ответ

1

Является ли это плохой дизайн

Вообще говоря, нет.

Существует множество белых документов на предмет хранения изображений в виде BLOB внутри базы данных по сравнению с использованием файловой системы OS. Вам нужно будет провести исследование, чтобы определить, что подходит вам. Но учитывая, что вы используете Access, я избегаю хранить изображения в базе данных, поскольку Access имеет верхний предел в 2 ГБ для общего размера файла базы данных. Изображения могут быть заполнены довольно быстро.

Предполагая, что поле изображения относительный путь к соответствующему файлу, все, что вы должны сделать, это добавить ImageField к Gridview и связать поле URL изображения в DataImageURLField собственности.

<asp:ImageField DataImageUrlField='<%# Bind("Picture") %>'></asp:ImageField> 

Это предполагает, что поле ItemPicture содержит строку, похожую на это: «/images/1.jpg». Если поле изображения буквально гиперссылки (HTML-<a> тег), то вы могли бы вместо того, чтобы добавить TemplateField к Gridview и в ItemTemplate добавить `контроль и связать его аналогичным образом:

<asp:TemplateField> 
    <EditItemTemplate> 
    </EditItemTemplate> 
    <ItemTemplate> 
    <asp:Literal ID="Literal1" runat="server" Text='<%# Bind("Picture") %>' 
    </ItemTemplate> 
<asp:TemplateField> 
+0

Что вы подразумеваете под Bind ("Picture")? Представляется ли картина представлению пути в системе баз данных? Спасибо вам большое заблаговременно. (: –

+0

Кроме того, будет ли он соответствовать, если я установил его для URL? –

+0

Ваш оператор select: 'SELECT ItemName as Name, ItemPicture as Picture ...', поэтому Picture - это имя поля из вашего оператора sql. Gridview, в какой-то момент, либо в разметке, либо программно, вы присоединяете его к источнику данных.Это означает, что _связывание с источником данных – fnostro

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