Частичная обратная передача OnTextChange не происходит - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть следующий код для события 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, похоже, не выполняет частичную обратную передачу.

Прежде чем кто-либо спросит, я запустил события ontextchanges и autopostback, которые будут использоваться моими экземплярами customtextbox.Вы можете увидеть, как по связанному вопросу: Выставление и затем использование обработчика события OnTextChange

Ответы [ 3 ]

1 голос
/ 03 октября 2011

Эта проблема была вызвана двойной AutoPostBack.

Родительский элемент управления:

<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" и это решило проблему для меня.

Если кто-то может дать дальнейшие объяснения того, почему двойной автопостбэк может вызвать это, я был бы рад проверить ваш ответ как правильный.

0 голосов
/ 09 октября 2011

set UpdatePanel Mode="Conditional" и AutoPostBack="True" and enableviewstate="true"

теперь это будет работать

0 голосов
/ 08 октября 2011

Удалите autopostback из родительского и добавьте его в child (ваш собственный).Это решит проблему.Кроме того, поскольку это пользовательский элемент управления, поэтому вы наследуете свойства от своего родителя.Даже если вы удалите Autopostback из элемента управления Custo, я думаю, он может работать, так как свойство по умолчанию имеет значение true в его родительском элементе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...