【问题标题】:Ajaxcontroltoolkit watermark extender timer blinkAjaxcontroltoolkit 水印扩展器定时器闪烁
【发布时间】:2012-09-11 10:35:45
【问题描述】:

我有一个 ASP.NET 页面

  1. 1 个计时器(Tick 事件触发更新面板)
  2. 1 更新面板
  3. 1 个标签(在更新面板中)
  4. 1 个文本框
  5. 1 个水印扩展器(用于 TextBox)

文本框和水印扩展器不在更新面板中,页面中有一些其他对象但我没有列出它们,计时器不会影响它们。当我在文本框中写东西时没有问题,但是当文本框为空并且水印扩展器在计时器滴答时处于活动状态时,水印文本正在闪烁。

可能是什么问题?

更新面板工作正常,计时器滴答时没有其他对象受到影响,但不知何故水印文本正在闪烁。

你能帮我解决这个问题吗?

asp.net 页面:

    <script type="text/javascript">
    Sys.Application.add_load(function () {
        WebForm_OnSubmit = Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit;
    });
</script>


    <div>
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </ajaxToolkit:ToolkitScriptManager>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <ajaxToolkit:TextBoxWatermarkExtender ID="TextBox1_TextBoxWatermarkExtender" 
            runat="server" Enabled="True" TargetControlID="TextBox1" 
            WatermarkText="Some Text">
        </ajaxToolkit:TextBoxWatermarkExtender>

        <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">
        </asp:Timer>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
        </asp:UpdatePanel>

    </div>

代码隐藏:

protected void Timer1_Tick(object sender, EventArgs e)
{
    Label1.Text = DateTime.Now.ToLongTimeString();
}

【问题讨论】:

    标签: c# asp.net asp.net-ajax ajaxcontroltoolkit


    【解决方案1】:

    这是 WatermarkExtender 控件的设计特性。这种行为的原因是为了防止将水印文本作为目标文本框的值提交给服务器。

    您可以通过在 AFTER ScriptManager 控件下方添加脚本来避免此类行为:

    <script type="text/javascript">
         Sys.Application.add_load(function () 
         {
              WebForm_OnSubmit = Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit;
         });
    </script>
    

    但请注意,在这种情况下,如果服务器上的水印文本框值等于水印文本,则需要明确忽略它。

    【讨论】:

    • 你是什么意思?当某些计时器在页面上滴答作响时,它是否默认闪烁?
    • 是的,它在每次回发时默认闪烁。我已经用可能的解决方案更新了我的答案以避免眨眼。
    • 我已将代码添加到我的页面,但它仍在闪烁,请注意定时器没有回发,我有一个标签,并且我在每个定时器滴答时都从数据库中获取一些值我不确定这会产生一些回发效果。
    • 您可以通过在 AFTER ScriptManager 控件下方添加脚本来避免此类行为
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    相关资源
    最近更新 更多