2017-03-23 40 views
1

我試圖利用中繼器內標籤元素的for屬性,但由於引用的控件是runat="server",所以在引用的控件中id被更改,但是不在使用for屬性引用它的標籤中。使用標籤的for屬性引用中繼器內的控件

此:

<label class="btn btn-primary active" runat="server" id="lblForm" for="cbForm"> 
    <input type="checkbox" autocomplete="off" id="cbForm" runat="server"/> 
    <label> 
     <%#Container.DataItem.Title%> 
    </label> 
</label> 

被渲染到:

<label id="afForms_rptForms_ctl00_lblForm" class="btn btn-primary active" for="cbForm"> 
    <input name="afForms$rptForms$ctl00$cbForm" type="checkbox" id="afForms_rptForms_ctl00_cbForm" autocomplete="off"> 
    <label> 
     Some String Value Here 
    </label> 
</label> 

所以現在的標籤不再是指定的CheckBox控件自標識由.NET改變。如何保持for歸因於當前控件的id是否爲.net更改了id?我不想將ClientIDMode更改爲Static,因爲我將有多個標籤/複選框,並且會在中繼器中創建重複的id值。

回答

1

那麼這裏是我結束了在我的repeater ItemDataBound事件中做的工作。

Protected Sub rptForms_ItemDataBound(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptForms.ItemDataBound 
    Dim lblForm As HtmlGenericControl = CType(e.Item.FindControl("lblForm"), HtmlGenericControl) 
    Dim cb As HtmlInputCheckBox = CType(e.Item.FindControl("cbForm"), HtmlInputCheckBox) 
    lblForm.Attributes.Item("for") = cb.ClientID 
End Sub 
相關問題