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事件处理程序
此问题是由双重自动回退引起的。
父控制:<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"
现在可以了