Событие TextChanged запускается снова, когда я делаю обратную передачу - PullRequest
0 голосов
/ 22 февраля 2011
<asp:UpdatePanel ID="uppBaixa" runat="server">
    <ContentTemplate>
            <asp:TextBox ID="txt1" runat="server" AutoPostBack="true" OnTextChanged="txt1_TextChanged"></asp:TextBox>
            <asp:TextBox ID="txt2" runat="server"></asp:TextBox>
            <asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" />
    </ContentTemplate>
</asp:UpdatePanel>

Так выглядит ASPX.Когда я покидаю (tab) txt1, вызывается событие TextChanged, которое обычно заполняет txt2.Но когда я изменяю текст в txt2 и нажимаю btnSave, чтобы обновить эти данные, txt1_TextChanged называется ОПЯТЬ (до того, как фактический метод btnSave_Click сработает)

1 Ответ

0 голосов
/ 22 февраля 2011

Если вы

  • Возьмите образец UpdatePanel и поместите его в новый проект (и добавьте ScriptManager)
  • Добавьте следующие методы

    protected void btnSave_Click(object sender, EventArgs e)
    {
        this.txt1.Text = "foo";
    
    }
    protected void txt1_TextChanged(object sender, EventArgs e)
    {
        txt2.Text = txt1.Text;
    }
    
  • Обновление txt1 до ABC, затем txt2 станет ABC

  • Обновление txt2 до Bar, затем txt1.Text будет ABC и txt2 будет Bar
  • Нажатие кнопки Сохранитьпросто заменит txt1 на Foo, а txt останется Bar

Это означает, что то, что вы описали, не воспроизводит.

Обратите внимание, что даже если вы установили txt1.text = "foo" на сервересторона, которая не вызывает событие textChanged, что означает, что, вероятно, что-то на стороне клиента

Попробуйте добавить это в ваше событие Page_Load, чтобы найти его.

  this.btnSave.Attributes.Add("OnClick", "debugger");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...