Вывод HTML ASP.NET Datagrid (отображение)

В настоящее время я связываю набор данных с сеткой данных.

ds = query.ExecuteReadQuery("select PollQuestionText as 'Survey Question',    
PollAnswer1Text as 'Selection 1', PollAnswer2Text as 'Selection 2', PollAnswer3Text  
as 'Selection 3', PollEnabled 'Status'  from tbl_pollquestions")

For Each row As Data.DataRow In ds.Tables(0).Rows
        If row.ItemArray(4).ToString = "0" Then
            row.ItemArray."<a href = """"> <img src = ""img/box_icon_edit_pencil1.gif"" border = ""0""> </a>"

        ElseIf row.ItemArray(4).ToString = "1" Then
            row.Item(4) = "<a href = """"> <img src = ""img/box_icon_edit_pencil2.gif"" border = ""0""> </a>"
        End If

    Next

GridView1.DataSource = ds

GridView1.DataBind()

Поскольку я вставляю html-код, почему он не конвертируется в html?

Результатом вывода является весь текст. (Предположим, отображается значок без URL-адреса перенаправления)

Не знаю почему.

Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
6 730
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы используете сетку, возможно, вы захотите использовать ее по назначению.

У вас должен быть шаблон содержимого.

Если вам нужно выполнить форматирование на основе значений, вы делаете это в событии rowdatabound.

Я думаю, вы получаете «неожиданное» поведение, потому что gridview может связываться с широким спектром коллекций (Array, Hashtable, Dataset и т. д.), И он управляет тем, как он конкретно связывает данные.

Назначение gridview - выполнить форматирование в разделе html страницы ... Там вы можете сделать много причудливого форматирования.

Если вы собираетесь использовать gridviews, хорошо знать события onrowdatabound и onrowcommand ...

БЫСТРАЯ ПОЧИНКА:

Думаю, потребуется немного времени, чтобы научиться делать это правильно. Между тем, если вы хотите быстро решить вашу проблему с наименьшим количеством изменений:

  • используйте элемент управления asp: literal для того, где вы хотите, чтобы ваше изображение
  • измените свой запрос в базе данных, чтобы заменить возвращаемое значение на html вместо значения 0/1
  • привяжите литерал к возвращаемому значению и пропустите текущий раздел форматирования
Ответ принят как подходящий

Вот один из быстрых способов решить вашу проблему без использования шаблона содержимого.

Сначала добавьте событие RowDataBound в свой GridView.

<asp:GridView ID = "GridView1" runat = "server" onrowdatabound = "GridView1_RowDataBound">
</asp:GridView>

Во-вторых, добавьте код для обработчика событий, используя вашу логику. Событие RowDataBound будет срабатывать для каждой строки, нам не нужно использовать foreach. Я использую C#, но вы можете легко преобразовать его в VB.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {    
    if (e.Row.RowType == DataControlRowType.DataRow) {        
        if (e.Row.Cells[4].Text == "0") {            
            e.Row.Cells[4].Text = "<a href=''> <img src='img/box_icon_edit_pencil1.gif' border='0'> </a>"
        } else {
            e.Row.Cells[4].Text = "<a href=''> <img src='img/box_icon_edit_pencil2.gif' border='0'> </a>"
        }
    }
}

В качестве примечания вы можете изменить

<a href=''> <img src='img/box_icon_edit_pencil1.gif' border='0'> </a>
<a href=''> <img src='img/box_icon_edit_pencil2.gif' border='0'> </a>

к

<a href = "" class = "Pencil1"></a>
<a href = "" class = "Pencil2"></a>

и установите фоновое изображение с помощью CSS.

Чтобы GridView выводил HTML, все, что вам нужно сделать, это установить для параметра HtmlEncode значение false в желаемом связанном поле.

<asp:BoundField DataField = "Question" HeaderText = "Question" HtmlEncode = "false" />

Другие вопросы по теме