4

我正在尝试更改位于 Asp.net 内的跨度的 CSS 类RepeaterItem。该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>问题的属性?

4

2 回答 2

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";
    }

}
于 2013-04-19T20:47:18.237 回答
1

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

<asp:Repeater>
    <ItemTemplate> 
        <span class="<%#Eval("ClassToAdd")%>"> 
        </span>
    </ItemTemplate>
</asp:Repeater>       
于 2013-04-23T18:48:43.397 回答