如何为 HeaderTemplate 的标签控件设置文本值
本文关键字:控件 置文本 标签 HeaderTemplate | 更新日期: 2023-09-27 18:19:13
ASP.NET using C#; .net3.5
我想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>
  
</td>
</tr>
<tr>
<td align="center">
<asp:Label ID="lblSkill1" runat="server" Text='<%# Eval("Skill1") %>' />
</td>
</tr>
</table>
</HeaderTemplate>
正如我上面所说,我如何设置一个值">java"来代替Skill1
?
在 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";
}
}
对于网格视图。
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";
}
}
标题用于
整个转发器,而项目模板用于每一行。不能在标头模板中使用 EVAL 函数,因为 eval 函数用于当前数据项。
不能在标头模板中使用数据绑定表达式,因为当前没有可用的绑定上下文。对于项模板,数据源中的每个项都将充当数据项,因此绑定表达式可以工作,但对于标题模板则不然。
假设您的数据源中有 5 行 - 您希望Eval("Skill1")
解析到什么 - 您希望它针对哪个项目/行解析?如果只想使用逻辑隐藏的代码动态设置文本,请使用 <%=
或使用ItemDataBound
事件。例如
...
<tr>
<td align="center">
<span><%= GetLabelText() %></span>
</td>
</tr>
</table>
</HeaderTemplate>
其中GetLableText
将是类后面的代码中的受保护或公共方法,它将提供所需的值。
请注意,我使用了相关的 html 标记而不是服务器控件<%=
因为它在服务器控件属性中不起作用。另一方面,如果您选择使用数据绑定事件,则必须使用用户服务器控制并使用FindControl
调用找到它。