В настоящее время я связываю набор данных с сеткой данных.
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-адреса перенаправления)
Не знаю почему.
Спасибо





Если вы используете сетку, возможно, вы захотите использовать ее по назначению.
У вас должен быть шаблон содержимого.
Если вам нужно выполнить форматирование на основе значений, вы делаете это в событии rowdatabound.
Я думаю, вы получаете «неожиданное» поведение, потому что gridview может связываться с широким спектром коллекций (Array, Hashtable, Dataset и т. д.), И он управляет тем, как он конкретно связывает данные.
Назначение gridview - выполнить форматирование в разделе html страницы ... Там вы можете сделать много причудливого форматирования.
Если вы собираетесь использовать gridviews, хорошо знать события onrowdatabound и onrowcommand ...
БЫСТРАЯ ПОЧИНКА:
Думаю, потребуется немного времени, чтобы научиться делать это правильно. Между тем, если вы хотите быстро решить вашу проблему с наименьшим количеством изменений:
Вот один из быстрых способов решить вашу проблему без использования шаблона содержимого.
Сначала добавьте событие 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" />