2009-01-01 47 views
0

目前我绑定数据集与数据网格。ASP.NET Datagrid HTML输出(显示)

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)

我不知道为什么。

感谢

回答

2

下面就来解决您的问题,而无需使用内容模板一个快捷方式。

首先,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设置背景图片。

1

如果您使用的是GridView控件,你可能想使用它的目的。

你应该有一个内容模板。

如果您需要根据值进行格式设置,请在rowdatabound事件中执行此操作。

,我认为你所得到的“意外”的行为,因为GridView控件可以绑定到一个广泛的集合(数组,哈希表,数据集等),并管理它如何特异性结合的数据。

GridView控件的目的是做页面的HTML部分的格式...有很多花哨的格式,你可以在那里做。

如果您打算使用GridView的,这是很好的熟悉onrowdatabound和onrowcommand事件......

快速修复:

我想这可能需要一点时间来学习如何做到这一点的正确的方法。在此期间,如果你想快速解决您的问题,变化量最少的:

  • 使用ASP:字面控制您希望您的图像
  • 改变你在数据库查询,以取代与HTML而不是0/1值
  • 绑定文字的返回值返回值并跳到你的当前格式部分
2

要让GridView输出HTML,您需要做的就是在所需的绑定字段上将HtmlEncode参数设置为false。

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