2012-01-03 1 views
1

C#을 사용하는 ASP.NET; .net3.5HeaderTemplate의 레이블 컨트롤에 대한 텍스트 값을 설정하는 방법

이 레이블에 대해 약간의 값을 설정하고 싶습니다. lblSkill1 컨트롤. 평가 모드에서 Skill1에 액세스 할 수 없습니다.

lblSkill1 컨트롤에 대해 '<%# Eval("Skill1") %>' 대신 일부 텍스트 값을 설정할 수 없습니다.

HTML 마크 업 :

    <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
            <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             <asp:Label ID="lblSkill1" runat="server" Text='<%# Eval("Skill1") %>' /> 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 

어떻게 내가 위에서 말했듯이 나는 Skill1의 자리에 값 '자바'을 설정할 수 있습니까?

답변

3

ItemDataBound 이벤트에서 컨트롤을 찾고 코드 숨김 파일에서 값을 설정할 수 있습니다. 리피터를 사용한다고 가정했습니다.

protected void MyControl_ItemDataBound(Object Sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Header) 
     { 
      var label = (Label)e.Item.FindControl("lblSkill1"); 

      if (label != null) 
       label.Text = "Text you want to set"; 
     } 
    } 

GridView의 경우.

protected void MyControl_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
      var label = (Label)e.Row.FindControl("lblSkill1"); 

      if (label != null) 
       label.Text = "Text you want to set"; 
     } 
    } 
+0

리피터 컨트롤을 사용하고 있지 않습니다. 나는 GridView를 사용하고있다. – venkat

0

헤더는 전체 반복기를 의미하지만 항목 템플릿은 각 행을 의미합니다. eval 함수는 현재 데이터 항목 용이므로 헤더 템플릿에서 EVAL 함수를 사용할 수 없습니다.

+0

답이 명확하지 않습니다. 리피터 컨트롤을 사용하지 않습니다. GridView를 사용하고 있습니다. – venkat

0

사용할 수있는 현재 바인딩 컨텍스트가 없기 때문에 헤더 템플릿 내에 데이터 바인딩 식을 사용할 수 없습니다. item-template의 경우 데이터 소스 내의 모든 항목이 데이터 항목의 역할을하므로 바인딩식이 작동 할 수 있지만 헤더 템플리트는 작동하지 않습니다.

데이터 소스에 5 행이 있다고 가정 해보십시오. Eval("Skill1")으로 예상되는 항목 - 어떤 항목/행에 대해 해결할 것으로 예상하십니까? 논리 코드 숨김을 사용하여 텍스트를 동적으로 설정하려면 <%=을 사용하거나 ItemDataBound 이벤트를 사용하십시오. 예를 들어, GetLableText가 필요한 값을 제공합니다 클래스 뒤에 코드의 보호 또는 공공 방법이 될 것입니다

... 
    <tr> 
     <td align="center"> 
     <span><%= GetLabelText() %></span>   
     </td> 
    </tr> 
    </table> 
</HeaderTemplate> 

.

<%=은 서버 컨트롤 속성 내에서 작동하지 않으므로 서버 컨트롤 대신 관련 HTML 마크 업을 사용합니다. 다른 한편, 데이터 바인딩 된 이벤트를 사용하도록 선택한 경우 사용자 서버 컨트롤에 FindControl 호출을 사용하여 찾을 수 있습니다.

+0

리피터 컨트롤을 사용하고 있지 않습니다. 나는 GridView를 사용하고있다. – venkat

관련 문제