如何在asp.net RepeaterItem中访问<span>元素的属性?</span>

时间:2013-04-19 20:45:40

标签: asp.net repeater

我正在尝试更改位于Asp.net RepeaterItem内的跨度的CSS类。 span元素内部还有其他标签(单选按钮)。

标记与此类似:

<asp:Repeater>
    <ItemTemplate>
        <span class="spanClass" runat="server">
            <label>
                <asp:RadioButton id="rbID">
                </asp:RadioButton>
            </label>
        </span>
    </ItemTemplate>
</asp:Repeater>

我可以使用以下内容编辑单选按钮:

rb = (RadioButton)(repeaterItem.FindControl("rbID");
rb.Checked = true;
//this works

但是,当使用类似的代码来抓取span时,它会失败并显示InnerHtml exception,因为span不是文字控件:

span = (GenericHtmlControl)(repeaterItem.FindControl("spanID");
span.Attributes.Add("class", "ClassToAdd");
//this fails

我已经完成的阅读说明了这种情况,因为span不是文字控件,因为它内部有其他服务器控件(单选按钮)。

有没有办法访问相关<span>的属性?

2 个答案:

答案 0 :(得分:5)

像这样更改span

<span id="spanID" runat="server">

然后在你的代码后面:

protected void myRep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item)
    {
        HtmlGenericControl x = (HtmlGenericControl)e.Item.FindControl("spanID");
        x.Attributes["class"] = "myClass";
    }

}

答案 1 :(得分:1)

您可以将一个名为“ClassToAdd”的字段添加到绑定到转发器的集合中。然后只需使用Eval即可显示它。 (例如,如果要将转发器绑定到DataTable,则可以添加一个名为ClassToAdd的新列,并在后面的代码中正确设置值。)

<asp:Repeater>
    <ItemTemplate> 
        <span class="<%#Eval("ClassToAdd")%>"> 
        </span>
    </ItemTemplate>
</asp:Repeater>