Как получить значение метки внутри элемента управления повторителем в переменной JavaScript

#javascript #asp.net

Вопрос:

Я хочу получить значение метки внутри элемента управления повторителем в переменной JavaScript

 <asp:Repeater ID="rep_tskAttachments" runat="server" OnItemDataBound="rep_tskAttachments_ItemDataBound">
        <asp:Label ID="rlbl_Remarks" runat="server" Text='<%# Eval("REMARKS") %>'></asp:Label>     
 </asp:Repeater>
 

Мой Код Таков

 var valComments =document.getElementById('<%=rlbl_Remarks.ClientID%>').innerText;
 

Комментарии:

1. A repeatable будет иметь несколько строк Labels , какую метку вы хотите? Кроме того, если вы просматриваете источник, идентификатор метки обычно представляет собой комбинацию идентификатора повторителя идентификатора метки индекса. rep_tskAttachments_rlbl_Remarks_0 Т. Е. Гораздо лучше будет использовать классы CSS

Ответ №1:

Ну, проблема в том, что у ретранслятора может быть 1 или 15 «наборов».

Итак, вы можете сделать это вот так:

         <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <asp:Label ID="lblHotel" runat="server" 
                    width="200px"
                    Text='<%# Eval("HotelName") %>' >
                </asp:Label>

                <asp:Button ID="Button1" runat="server" Text="Row click (client side)"
                    OnClientClick='<%# "myrowfun("   Container.ItemIndex.ToString   ");return false;" %>'
                    
                    />

                <br />
            </ItemTemplate>
        </asp:Repeater>

        <script>
            function myrowfun(ix) {
                alert("row click index = "   ix)
                lblID = "Repeater1_lblHotel_"   ix
                alert(lblID)
                // jQuery
                alert("Hotel name from repeater = "   $('#'   lblID).text())
                // javascript without jQuery
                MyLabel = document.getElementById(lblID)
                alert("Hotel = "    MyLabel.innerText)
            }
        </script>
 

Итак, выше мы могли бы заполнить ретранслятор вот так:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        LoadGrid()
    End If
End Sub

Sub LoadGrid()

    Using con As New SqlConnection(My.Settings.TEST3)
        Using cmdSQL =
            New SqlCommand("SELECT TOP 5 ID, FirstName, LastName, HotelName from tblHotels ORDER BY HotelName", con)

            con.Open()
            Repeater1.DataSource = cmdSQL.ExecuteReader
            Repeater1.DataBind()

        End Using
    End Using

End Sub
 

И тогда у нас теперь есть это:

введите описание изображения здесь

Когда мы нажимаем на строку, он вызывает js и получает значение одного отеля.

напр.:

введите описание изображения здесь

таким образом, даже если у вас есть только 1 набор в повторителе, он будет начинаться с 0 для индекса, и каждая метка будет иметь имя

 "repeater name"   "_"   "label name"   "_"   row index