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 exceptionspan

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

私が行った読書によると、これはそのspan中に他のサーバー コントロール (ラジオ ボタン) があるため、リテラル コントロールではないためです。

問題の属性にアクセスする方法はあります<span>か?

4

2 に答える 2

1

リピーターにバインドするコレクションに「ClassToAdd」というフィールドを追加できます。次に、単に Eval を使用して表示します。(たとえば、リピーターを DataTable にバインドしている場合は、ClassToAdd という新しい列を追加し、コード ビハインドで値を適切に設定できます。)

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