2015-02-25 6 views
0

У меня есть ретранслятор, внутри которого есть некоторые элементы управления, один из которых является текстовым полем. Я пытаюсь получить текстовое поле с JQuery, мой код выглядит как это:ClientId вызывает NullReferenceException

$("#<%= ((TextBox)myRpt.FindControl("tbText")).ClientID %>").click(function (event) {}); 

, но я всегда получаю NullReferenceException. Кто-нибудь может понять, что может вызвать это?

Ретранслятор выглядит примерно так:

<asp:Repeater ID="myRpt" runat="server" onitemdatabound="myRpt_ItemDataBound"> 
    <HeaderTemplate> </HeaderTemplate> 
    <ItemTemplate> /*some controls*/ 
     <td id="tdX" runat="server"> 
      <asp:TextBox ID="tbText" runat="server" ClientIDMode = "Static"></asp:TextBox> 
     </td> 
    </ItemTemplate> 
</asp:Repeater> 
+1

Вы генерируете одинаковый идентификатор 'tbText' для всех текстовых полей, –

ответ

1

Так как это ASP.NET repeater контроль, таким образом, все элементы управления внутри ретранслятора будет повторяться, и поэтому текстовые поля, так что вы будете иметь Идентификаторы добавляемые с 1,2 ,, и так далее. Так что лучше используйте класс для вашего текстового поля и примените функцию следующим образом: -

$('.yourTextboxClassName').click(function() { 
    //Your code goes here 
    //You can refer to the current textbox using $(this) 
}); 
Смежные вопросы