У меня необычная проблема с инструментарием AJAX ColorPickerExtender. Код Javascript работает нормально, он меняет цвет фона расширенного текстового поля на выбранный цвет, а текст также на выбранный цветовой код, но когда я пытаюсь получить текст этого расширенного текстового поля из кода, он возвращается, как если бы он возвращал исходное значение текста, как если бы JavaScript не изменил его , Так как этот же код работает на моем другом приложении, я подозреваю, что проблема в том, что я помещаю ColorPickerExtender в UpdatePanel, а затем в пользовательский элемент управления. Вот код:
Код управления пользователем, где ColorPickerExtender:
<script language="javascript" type="text/javascript">
function colorChanged(sender) {
sender.get_element().style.backgroundColor = "#" + sender.get_selectedColor();
sender.get_element().style.color = "#" + sender.get_selectedColor();
sender.get_element().value = "0x" + sender.get_selectedColor();
}
</script>
...
...
<asp:TextBox ID="ColorTextBox" runat="server" ReadOnly="True" BackColor="Black" Text="" >0x000000</asp:TextBox>
<asp:ColorPickerExtender ID="ColorTextBox_ColorPickerExtender" runat="server" Enabled="True" TargetControlID="ColorTextBox" OnClientColorSelectionChanged="colorChanged" PopupButtonID="PickColorButton">
</asp:ColorPickerExtender>
<asp:Button ID="PickColorButton" runat="server" Text="Pick Color" />
Код страницы (верхний пользовательский элемент управления оборачивается в Panel, а затем в панель обновления):
<asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="PostNewThoughtButton1" PopupControlID="pnlThoghtPopup" BackgroundCssClass="modalBackground" DropShadow="false" />
...
<asp:Panel ID="pnlThoghtPopup" runat="server" Style="display:none;">
<asp:UpdatePanel ID="pnlUpdate" runat="server">
<ContentTemplate>
<My:NewThoughtPopup ID="NewThoughtPopup1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
Итак, когда я пытаюсь вызвать это в codebehind:
string color = ColorTextBox.Text;
color всегда возвращает начальное значение: 0x000000, хотя со стороны клиента все выглядит нормально, текст ColorTextBox обновляется, и его цвет меняется, на стороне сервера ничего не происходит, нужно ли вызывать функцию обратной передачи перед попыткой получить цвет строки? Примечание: тот же код работает нормально без панели обновления и когда он не используется на пользовательском элементе управления