OnTextChange部分回发没有发生

本文关键字:OnTextChange | 更新日期: 2023-09-27 18:10:12

我有以下OnTextChanged事件的代码:

protected void CustomTextBox_OnTextChanged(object sender, EventArgs e)
{
    if (tick.Attributes["class"] == "tick displayBlock")
    {
        tick.Attributes["class"] = "displayNone";
        tick.Attributes.Add("class", "displayNone");
    }
    checkAvailability.Attributes.Add("class", "displayBlock");
    checkAvailability.Attributes["class"] = "displayBlock";
}

:

<asp:UpdatePanel ID="upMyUpdatePanel" runat="server">
    <ContentTemplate>
        <uc:CustomTextBox ID="txtUserName"
            OnTextChanged="CustomTextBox_OnTextChanged" 
            AutoPostBack="True"
            class="someClass">
        </uc:CustomTextBox> 
    </ContentTemplate>
</asp:UpdatePanel>

所以我上面的代码在Chrome, IE 8,9中工作得很好。

然而,Firefox 6似乎没有做部分回发。

在任何人问我之前,我已经为我的customtextbox实例使用了ontextchanges和autopostback事件。你可以看到如何在相关的问题:暴露然后使用OnTextChange事件处理程序

OnTextChange部分回发没有发生

此问题是由双重自动回退引起的。

父控制:

<uc:CustomTextBox ID="ctbMyTextBox"
                        OnTextChanged="CustomTextBox_OnTextChanged"              
                        AutoPostBack="True"             
                        class="someClass">         
</uc:CustomTextBox>      
子控制:

<asp:UpdatePanel ID="upMyUpdatePanel" runat="server">     
    <ContentTemplate>            
        <uc:CustomTextBoxChild ID="ctbcMyTextBox"
                          OnTextChanged="CustomTextBox_OnTextChanged"              
                          AutoPostBack="True"             
                          class="someClass">         
        </uc:CustomTextBoxChild>      
    </ContentTemplate> 
</asp:UpdatePanel> 

在父控件中,我删除了AutoPostBack="True",这为我解决了这个问题。

如果有人能进一步解释为什么双自动回退会导致这种情况,我很乐意检查你的答案是否正确。

将autopostback从父控件中移除,并将其添加到子控件(您的自定义控件)。这样问题就解决了。此外,由于它是一个自定义控件,因此您将从父控件继承属性。即使您从自定义控件中删除Autopostback,我认为它可能会工作,因为默认情况下,该属性在其父属性中为true。

set UpdatePanel Mode="Conditional" andAutoPostBack="True" and enableviewstate="true"

现在可以了