У меня есть родительский ретранслятор, который содержит еще один дочерний ретранслятор. Для простоты предположим, что дочерний ретранслятор содержит текстовое поле и Requiredvalidator.В ASP.NET Web Forms Я хочу получить контроль внутри дочернего репитера с javascript
Простой пример разметки:
<asp:Repeater ID="rpt1" runat="server">
<HeaderTemplate>
....
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lbl1" runat="server" CssClass=".."></asp:Label>
<div class="..">
<asp:Repeater ID="rpt2" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<div class="...">
<asp:TextBox ID="txt21" runat="server" CssClass="..." MaxLength="7" CssClass="ErrorMessage" ErrorMessage="*" />
<asp:RequiredFieldValidator ID="rfv21" runat="server" CssClass="ErrorMessage" ErrorMessage="*" />
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
я создаю метод, как это, чтобы получить второго ретранслятора RequiredField ID:
function getId(){
var myId = document.getElementById('<%= rfv21.ClientID %>');
}
, но, конечно, он не работал и не было исключение:
The name control-name Does Not Exist in the Current Context
Так как я могу это сделать?
Я хочу отметить, что бизнес-потребность для меня является то, что когда OnChange, OnKeyUp, OnKeyDown события пожаров на txt21 он получит это эквивалентно rfv21 и enbale его:
создать этот метод, который стреляет в OnChange , OnKeyUp, OnKeyDown событий изменилось:
function txt21_onChange(txtbox) {
var newValue = this.value;
var oldValue = this.oldvalue;
var myRfv2 = document.getElementById('<%= rfv2.ClientID %>');
if (newValue != oldValue) {
ValidatorEnable(myRfv2, true);
}
}
и я обновить txt21 быть:
<asp:TextBox ID="txt21" runat="server" CssClass=".." MaxLength="7" onkeyup="javascript: txt21_onChange(this);this.oldvalue = this.value;" />
, но эта линия хочет работать:
var myRfv2 = document.getElementById('<%= rfv2.ClientID %>');
как я уже объяснял.
Я думаю, что Item.FindControl (..) может помочь, но как мы можем использовать его в этом случае?
Там будет много, много 'управления rfv21' - каждый родитель повторитель строка будет иметь столько же, как число его дочерние репетиры. Каждый из них будет иметь сгенерированный идентификатор. Вы хотите получить доступ к определенному, или к каждому из них одновременно? – Andrei
Я хочу получить доступ к определенному rfv21, когда txt21 onchange срабатывает. Я хочу получить доступ к его rfv21, чтобы включить его. – Marzouk
Тогда вам нужно получить к нему доступ относительно txt, который его запустил. Вы используете jquery? Будет довольно простая задача с ним – Andrei