2012-11-08 1 views
0

질문 거의 모든 것을 말하고 있습니다. 내 영문 페이지에서 내가의 GridView를 가지고 열에서 나는 TemplateField 지금열의 텍스트에 따라 Gridview 열의 하이퍼 링크를 이미지로 바꾸는 방법은 무엇입니까?

 <asp:TemplateField HeaderText = "Status"> 
      <ItemTemplate> 
       <asp:HyperLink ID = "HyperLink1" runat = "server" Target = "_blank" 
        NavigateUrl = '<%# Eval("URL") %>' 
        Text = '<%#Eval("Status") %>'> 
       </asp:HyperLink> 
      </ItemTemplate> 
     </asp:TemplateField> 

그 중 하나 BoundFields의 무리를 가지고,이 하이퍼 링크 텍스트가 무엇인지에 따라 다른 이미지에 매핑 할 평가했다. 예를 들어, '성공'은 큰 웃는 얼굴을 대신 표시하고 '실패'는 외설적 인 얼굴을 표시합니다. 이것을 어떻게 할 수 있습니까?

감사합니다.

+0

추가해야합니다. 이것은 첫 번째 열입니다. RowDataBound 메서드에서 e.Row.Cells [0] – Freakishly

답변

2

당신은

<img src='/images/status/<%#Eval("Status") %>.jpg' /> 

처럼 하이퍼 링크에 이미지를 넣어 그냥 이름으로 각 상태에 대한 다른 이미지를 만들 수 있습니다. 그렇지 않으면 아마도 DataBind 이벤트에서 뭔가를해야 할 것입니다.

1

이미지에 대한 대체 텍스트이

protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     HyperLink HyperLink1 = e.Row.FindControl("HyperLink1"); 
     if(SomeText == "Success") 
      HyperLink1.NavigateUrl = "Url to Smiley"; 
     else 
      HyperLink1.NavigateUrl = "Url to Frowney"; 
    } 
} 
+0

을 조작하고 있습니다. 그래도 이미지를 변경할 수 없습니다. 또한 각 행마다 다른 URL이 무엇인지 알지 못합니다. – Freakishly

0
HyperLink HyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1"); 

    switch (HyperLink1.Text) 
     { 
      case "Completed": 
        HyperLink1.ImageUrl = "Images\\Success.png"; 
        HyperLink1.ToolTip = "Completed"; 

도구 설명 속성지도를보십시오.

나를 시작하기위한 코딩 비즈에게 감사드립니다.

0

ImageUrl 속성을 설정하려는 경우 RowDataBound 이벤트를 사용하는 것이 좋습니다.

partial class DataSourceDataType 
{ 
    public string SuccessImgURL 
    { 
     get 
     { 
      return (IsSuccess) ? "~/images/success.png" : "~/images/failure.png"; 
     } 
    } 
} 

를 다음 당신에게 : 나는 데이터를 변경한다 사용한 또 다른 트릭을 사용하는 URL을 나타내는 속성을 가지고 바인딩되는 객체

protected void questionsGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
{ 
    DataSourceDataType row; 
    HyperLink hyperLink1; 

    if (e.Row.RowType == DataControlRowType.DataRow & e.Row.DataItem is DataSourceDataType) 
    { 
     row = (DataSourceDataType)e.Row.DataItem; 
     hyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1"); 

     hyperLink1.ImageUrl = (row.IsSuccess) ? "~/images/success.png" : "~/images/failure.png"; 
    } 
} 

: 핸들러 방법은 같을 것입니다 수 해당 속성에 바인딩하십시오.

참고 : IsSuccess은 사용자 고유의 필드 이름 또는 부울 조건으로 바꿔야합니다.
종종 LINQ to SQL 개체와 함께이 기능을 사용하므로 부분 클래스를 사용하여 별도의 파일에서 속성을 추가 할 수 있습니다. 이렇게하면 LINQ to SQL 도구에 대한 추가 사항을 제거 할 필요가 없습니다.

관련 문제