Ajaxcontroltoolkit水印扩展器计时器闪烁

时间:2012-09-11 10:35:46

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

我有一个我已经

的ASP.NET页面
  1. 1计时器(Tick事件是更新面板的触发器)
  2. 1更新面板
  3. 1个标签(在更新面板中)
  4. 1 TextBox
  5. 1个WaterMark扩展器(用于TextBox)
  6. textbox和watermarkextander不在updatepanel中,页面中还有一些其他对象,但我没有列出它们,计时器不会影响它们。当我在文本框中写东西时没有问题,但是当文本框为空并且水印延长器在计时器上激活时,水印文本会闪烁。

    可能是什么问题?

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

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

    asp.net page:

        <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();
    }
    

1 个答案:

答案 0 :(得分:1)

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

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

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

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