Я разработал свой пользовательский элемент управления с label
и textbox
(оба из DevExpress
).
У меня есть страница с некоторыми элементами управления, включая мой и блок JavaScript.
Я понимаю, что я должен использовать
document.getElementById("<%=tbPosition.ClientID %>")
чтобы получить доступ к пользовательскому контролю. Но document.getElementById("<%=tbPosition.ClientID %>")
возвращает ноль.
Вот мой код:
1) Page.aspx
с пользовательским управлением
<script type="text/javascript" language="javascript">
var tb = document.getElementById("<%=tbPosition.ClientID %>"); // returns null
</script>
<head></head>
<body>
<rsoft:TextBoxControl ID="tbPosition" runat="server"
Title="Позиция" IsRequired="true"
ValidationMode="UnsignedInt" ClientIDMode="Static" />
</body>
2) Управление пользователем 'rsoft: TextBoxControl'
<table>
<tr>
<td class="styleFieldLabel">
<asp:Label ID="lblTitle" Text="" runat="server" Font-Bold="True" />
</td>
<td class="styleFieldInput">
<dx:ASPxTextBox ID="tbValue" runat="server" Width="500px"
ClientIDMode="Static" ClientInstanceName="tbValue">
<ClientSideEvents TextChanged="tbValue_TextChanged" />
<ValidationSettings SetFocusOnError="True" Display="Dynamic" RequiredField-ErrorText="Поле обязательно для заполнения"
ErrorTextPosition="Bottom" ValidateOnLeave="false" />
</dx:ASPxTextBox>
</td>
</tr>
Кто-нибудь знает, почему document.getElementById("<%=tbPosition.TextBoxClientID %>")
превращается в document.getElementById("tbPosition_tbValue")
, но есть html-элемент "tbPosition_tbValue_I", а не "tbPosition_tbValue"? Это происходит, когда я использую элементы управления DevExpress внутри моего пользовательского элемента управления. Когда мой контроль не содержит devexpress, но обычно <Asp:Textbox>
У меня нет этой проблемы.