2009-01-01 81 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" />