选择&的完整回发在更新面板中删除

时间:2018-04-25 12:37:25

标签: c# asp.net textbox updatepanel

我在更新面板中遇到了asp.net文本框的问题。添加或删除每个单独的字符时,它完全正常,但如果我突出显示文本框中的所有文本,然后删除它,则会发生完整的回发,而不是预期的部分回发。

为什么会这样?我没有发现任何与此特定问题有关的内容,所以我可能做错了。

示例aspx:

<asp:UpdatePanel ID="updExample" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
  <ContentTemplate>
    <asp:Repeater ID="rptExample" runat="server" .... >
      <ItemTemplate>
        <asp:TextBox ID="txtExample" runat="server" ClientIDMode="static" Text='<%# Eval("Example") %>' OnTextChanged="txtExample_TextChanged" AutoPostBack="true"></asp:TextBox>
      </ItemTemplate>
    </asp:Repeater>
  </ContentTemplate>
</asp:UpdatePanel>

示例TextChanged事件:

protected void txtExample_TextChanged(object sender, EventArgs e)
{
   updExample.Update();
}

附加说明:

  • 将UpdateMode切换为“始终”不起作用。

1 个答案:

答案 0 :(得分:0)

Karthikeyan Nagaraj 在评论中指出尝试添加触发器以及我已有的触发器。我确实已经有了这个,但是,我在ItemDataBound事件中分配了触发器,我在重新调查后意识到这是不正确的。 ItemCreated事件更适合。

我在ItemCreated事件中找到控件没有问题,但是在更新面板中添加新的异步回发触发器让我感到悲伤并且说在更改文本时无法找到控件。为了解决这个问题,我使用了脚本管理器RegisterAsyncPostBackControl();方法如下所示。

protected void rptExample_ItemCreated(object sender, RepeaterItemEventArgs e)
{
   var input = e.item.FindControl("txtExample");

   if (input != null) {
     ScriptManager sm = ScriptManager.GetCurrent(this);
     sm.RegisterAsyncPostBackControl(input);
   }
}