문제

현재 데이터세트를 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 없이 아이콘이 표시되고 있다고 가정)

왜인지 모르겠습니다.

감사해요

도움이 되었습니까?

해결책

컨텐츠 템플릿을 사용하지 않고 문제를 해결하는 빠른 방법은 다음과 같습니다.

먼저 추가하십시오 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를 사용하여 배경 이미지를 설정하십시오.

다른 팁

그리드 뷰가 HTML을 출력하도록하려면 원하는 바운드 필드에서 htmlencode 매개 변수를 False로 설정하기 만하면됩니다.

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

그리드뷰를 사용하는 경우 의도한 대로 사용하고 싶을 수도 있습니다.

콘텐츠 템플릿이 있어야 합니다.

값을 기반으로 형식을 지정해야 하는 경우 rowdatabound 이벤트에서 수행합니다.

Gridview는 다양한 컬렉션(Array, Hashtable, Dataset 등)에 바인딩할 수 있고 데이터를 구체적으로 바인딩하는 방법을 관리하기 때문에 "예기치 않은" 동작이 발생한다고 생각합니다.

Gridview의 목적은 페이지의 html 섹션에서 서식을 지정하는 것입니다.거기에서 할 수 있는 멋진 서식이 많이 있습니다.

그리드뷰를 사용하려는 경우 onrowdatabound 및 onrowcommand 이벤트에 익숙해지는 것이 좋습니다.

빠른 수정:

올바른 방법을 배우는 데는 약간의 시간이 걸릴 수 있을 것 같습니다.그 사이에 최소한의 변경으로 문제를 빠르게 해결하려면 다음 단계를 따르세요.

  • 이미지를 원하는 위치에 asp:literal 컨트롤을 사용하세요.
  • 반환 값을 0/1 값 대신 html로 바꾸려면 db에서 쿼리를 변경하십시오.
  • 리터럴을 반환 값에 바인딩하고 현재 형식 지정 섹션을 건너뜁니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top