2012-01-03 102 views
1

ASP.NET使用C#; .net3.5如何为HeaderTemplate的标签控件设置文本值

我想为此标签lblSkill1控件设置一些值。我无法访问Eval函数中的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的地方设置一个值 '的Java' 正如我上面说的吗?

回答

3

在ItemDataBound事件中,您可以找到控件并在您的代码后面的文件中设置值,我推测您使用了Repeater。

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

我没有使用Repeater控制。我正在使用GridView。 – venkat 2012-01-03 11:04:50

0

标题是用于整个中继器,而项目模板是针对每一行。 由于eval函数用于当前数据项,所以不能在标题模板中使用EVAL函数。

+0

不清楚你的答案。我没有使用Repeater控制。我正在使用GridView – venkat 2012-01-03 11:04:12

0

由于当前没有可用的绑定上下文,因此无法在头模板中使用数据绑定表达式。对于项目模板,数据源中的每个项目将充当数据项目,因此绑定表达式可以工作,但对于标题模板不起作用。

假设您的数据源中有5行 - 您期望Eval("Skill1")可以解决 - 针对哪个项目/行,您希望解决哪个项目/行?如果您只是想通过使用逻辑后面的代码动态设置文本,则使用<%=或使用ItemDataBound事件。例如,

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

GetLableText其中将在代码被保护的或公共的方法背后的类,将提供所需要的值。

请注意,我使用相关的html标记而不是服务器控件,因为<%=在服务器控件属性中不起作用。另一方面,如果您选择使用数据绑定事件,则必须使用用户服务器控制,并使用FindControl调用找到它。

+0

我没有使用Repeater控件。我正在使用GridView。 – venkat 2012-01-03 11:05:12

相关问题