Использовать javascript для отображения метки, когда в репитере asp.net установлен флажок
У меня есть ретранслятор asp.net, который имеет 4 столбца, заполненных набором данных, который извлекается с сервера SQL. В одном из полей есть флажок, а все остальные - метки. одно поле называется "тип". Каждая запись будет одного из двух типов. То, что я хотел бы сделать, это использовать JavaScript, чтобы проверить, если флажок установлен, и если это так, отобразить счетчик для "типа" в текстовом поле. например, будет два текстовых поля, одно из которых будет отображать "тип 1 имеет 3 проверенных", а другое будет отображать "тип 2 имеет 3 проверенных". В настоящее время у меня есть функция Javascript (см. Ниже), которая подсчитывает все отмеченные флажки и отображает счетчик в текстовом поле, но я хотел бы иметь возможность отслеживать счетчик для каждого типа. Есть ли способ в javascript, я могу захватить тип, когда он проверяет, если флажок установлен.
JavaScript
function checkrpt() {
var inputs = document.getElementsByTagName('input');
var count = 0
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].type == "checkbox") {
if (inputs[i].checked == true)
count += 1;
}
if (count > 6) {
inputs[i].checked = false;
}
}
if (count > 0) {
document.getElementById('txtSelectionStatus').value = count + ' items have been selected';
} else {
document.getElementById('txtSelectionStatus').value = 'No items have been selected';
}
if (count > 6) {
document.getElementById('txtSelectionStatus').value = 'You can only select 6 itmes';
}
}
ASP: Repeater
<asp:repeater id="rptStep1Data" runat="server">
<HeaderTemplate>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr style="backgound-color:#DDDDDD;">
<td width="150px" align="center" class="tableheader"><b>Add To Grid</b></td>
<td width="100px" class="tableheader" align="center"><b>Distance</b></td>
<td width="400px" align="left" class="tableheader"><b>Address</b></td>
<td width="100px" align="center" class="tableheader"><b>Type</b></td>
</tr>
<tr>
<td colspan="4">
<div style="overflow:scroll; overflow-x:hidden; height: 300px; width: 100%">
<table width="100%" border="1" cellpadding="0" cellspacing="0">
</HeaderTemplate>
<ITEMTEMPLATE>
<tr>
<td width="148px" align="center" class="content">
<asp:checkbox id="chkSelected" runat="server" onClick="javascript:checkrpt()" Checked='<%# makeChecked(Container.DataItem("Selected")) %>' />
</td>
<td width="100px" align="center" class="content">
<asp:label id="lblDistance" runat="server" Text='<%# Container.DataItem("Distance") %>' />
</td>
<td width="390px" align="left" style="padding-left:10px" class="content">
<asp:label id="lblAddress" runat="server" Text='<%# Container.DataItem("Address") %>' />
</td>
<td width="100px" align="center" class="content">
<asp:label id="lblType" runat="server" Text='<%# Container.DataItem("Type") %>' />
</td>
</tr>
</ITEMTEMPLATE>
<ALTERNATINGITEMTEMPLATE>
<tr>
<td align="center" class="content">
<asp:checkbox id="chkSelected" runat="server" onClick="javascript:checkrpt()" Checked='<%# makeChecked(Container.DataItem("Selected")) %>' />
</td>
<td align="center" class="content">
<asp:label id="lblDistance" runat="server" Text='<%# Container.DataItem("Distance") %>' />
</td>
<td align="left" style="padding-left:10px" class="content">
<asp:label id="lblAddress" runat="server" Text='<%# Container.DataItem("Address") %>' />
</td>
<td align="center" class="content">
<asp:label id="lblGLA" runat="server" Text='<%# Container.DataItem("Type") %>' />
</td>
</tr>
</ALTERNATINGITEMTEMPLATE>
<FooterTemplate>
</table>
</div>
</td>
</tr>
</table>
</FooterTemplate>
</asp:repeater>
1 ответ
Попробуйте использовать onClientClick= "checkrpt()"
вместо onClick
событие checkbox
,onClientClick
запускает клиентский JavaScript-код