Как я могу показать картинку в строке сетки, не сохраняя ее на жестком диске? - PullRequest
1 голос
/ 20 февраля 2012

Я создаю торговый сайт.у меня есть gridview, который связан с управлением данными objectdatas для задач администрирования.эта сетка отвечает за отображение таблицы элементов в базе данных сервера SQL.каждый элемент также может иметь или не иметь изображение.поэтому, когда эта сетка показана администратору, я хочу, чтобы для каждой строки был доступен небольшой эскиз соответствующего изображения.Вот код сетки:

<asp:GridView ID="gridview1" runat="server" 
   DataSourceID="objDataSource" DataKeyNames="item_id">
    <Columns>
        <asp:BoundField DataField="item_category" Visible="false" />
        <asp:BoundField HtmlEncode="true" DataField="item_name" 
            HeaderText="Item Name" />
        <asp:BoundField HtmlEncode="true" NullDisplayText="Not Set" 
            DataField="item_desc" HeaderText="Item Description" />
        <asp:TemplateField HeaderText="Item Picture"
            ItemStyle-Width="40px" ItemStyle-Height="40px">
            <ItemTemplate>
                <!-- here should be the image -->
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ButtonType="Button" ShowSelectButton="True"
            HeaderText="Selecting" />
    </Columns>
</asp:GridView>

Мне известны только два варианта отображения изображения в браузерах:

  • сохранить растровое изображение в потоке ответов.это не будет внутри gridview при рендеринге клиенту (правильно?).
  • сохранить растровое изображение на жестком диске после оператора select и использовать элемент управления изображением внутри шаблона, а затем динамически назначить атрибут ImageUrl.

Второй вариант слишком дорогой, поскольку для каждого изображения (или данных) требуется запись и чтение на жестком диске.так как я могу это сделать?это вообще возможно?

ps: ajax не вариант.

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Создайте веб-обработчик ASP.NET (файл .ashx), который обрабатывает ваше изображение, передайте идентификатор изображения в сетку и создайте «ссылку» на этот обработчик изображения, который будет либо отображать изображение, если оно существует, либовозможно отображение изображения «нет изображения»

Вот краткое руководство по файлам ASHX: http://www.dotnetperls.com/ashx

Я могу опубликовать дополнительный код, если вам это нужно

2 голосов
/ 20 февраля 2012

Можно поместить необработанные данные изображения встроенными в HTML. Это не распространенная техника, но она работает - подробности см. http://www.websiteoptimization.com/speed/tweak/inline-images/.

Некоторые вещи, которые следует иметь в виду: это работает не во всех браузерах - IE7 и старше не поддерживают это, например, насколько я знаю. Кроме того, это не очень эффективный способ отправки растрового изображения, поэтому, если они не очень маленькие, это ужасная идея. (Хотя для достаточно крошечных растровых изображений, издержки HTTP, связанные с отдельной загрузкой, могут быть несколько хуже, чем накладные расходы для встроенных изображений. Кроме того, если вы можете включить сжатие для страниц HTTP на вашем сервере, то встроенные растровые изображения выглядят несколько менее плохими. .)

Но в целом вам, вероятно, лучше использовать отдельный обработчик, предложенный Энтони Шоу. Это, вероятно, будет лучшим решением, если это действительно очень маленькие изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...