我在一个设置背景颜色的表单上有一个带有ColorPickerExtender的TextBox控件。当用户更改颜色时,我想要发生两件事:
使用onColorChanged()
JavaScript,颜色更改正常。我的事件处理程序也会在完整回发期间触发,并从其他控件生成部分/ AJAX回发。但是,它本身不会产生立即回发。
以下是.aspx文件的相关行:
<%@ Page Title="" Language="C#" MasterPageFile="~/FingerTipDisplay.Master" AutoEventWireup="true" CodeBehind="EditorLayoutv3.aspx.cs" Inherits="FingerTipDisplay.config.EditorLayoutv3" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxControlToolkit" %>
<asp:UpdatePanel ID="upGeneralLayoutData" runat="server">
<ContentTemplate>
<asp:Label runat="server" Text="Background color:" CssClass="ContentBodyText" ToolTip="Select the background color for this layout"></asp:Label>
<asp:TextBox ID="txtLayoutBackgroundColor" runat="server" ToolTip="Select the background color for this layout" CssClass="ColorPickerExtenderTextBox" Width="50" OnTextChanged="txtLayoutBackgroundColor_TextChanged" AutoPostBack="True"></asp:TextBox>
<ajaxControlToolkit:ColorPickerExtender TargetControlID="txtLayoutBackgroundColor" runat="server" OnClientColorSelectionChanged="onColorChanged" />
</ContentTemplate>
</asp:UpdatePanel>
以下是来自站点主站的ScriptManager:
<asp:ScriptManager ID="smFingerTipDisplay" runat="server">
</asp:ScriptManager>
这是事件处理程序:
protected void txtLayoutBackgroundColor_TextChanged(object sender, EventArgs e)
{
moLayout.BackgroundColor = txtLayoutBackgroundColor.Text;
if (moLayout.BackgroundColor.Substring(0, 1) != "#")
{
moLayout.BackgroundColor = "#" + moLayout.BackgroundColor;
}
// TODO: update preview image
}
这是JavaScript:
onColorChanged = function (oSender) {
/// <summary>Callback to use for when a color picker extender changes colors. This
/// sets the foreground and background of the TextBox control to the selected color.
/// <param name='oSender' type='Object'>The control that changed</param>
oSender.get_element().style.color = "#" + oSender.get_selectedColor();
oSender.get_element().style.backgroundColor = "#" + oSender.get_selectedColor();
}
答案 0 :(得分:0)
解决了这个问题。事实证明,当ColorPickerExtender
更改相应TextBox
中的文字时,它根本不会引发TextChanged
事件。然而,手动输入TextBox
会产生所需的效果,所以我只是将其添加到onColorChanged
处理程序中:
oSender.get_element().onchange();
现在它有效。感谢大家的帮助。