#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