C# 如何将UpdatePanel设置为在以编程方式注册AsyncPostBackTrigger时自动更新?

C# 如何将UpdatePanel设置为在以编程方式注册AsyncPostBackTrigger时自动更新?,c#,asp.net,asp.net-ajax,updatepanel,C#,Asp.net,Asp.net Ajax,Updatepanel,我有一个按钮可以触发UpdatePanel,但它位于不同的容器中,因此如果我像下面这样放置代码: <asp:UpdatePanel ID="uptxtQuickSearch" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" style="height: 100%;"> <ContentTemplate> <asp:TextBox ID="txtQuickSe

我有一个按钮可以触发UpdatePanel,但它位于不同的容器中,因此如果我像下面这样放置代码:

<asp:UpdatePanel ID="uptxtQuickSearch" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" style="height: 100%;">
    <ContentTemplate>
        <asp:TextBox ID="txtQuickSearch" CssClass="textinput" onmouseover="this.select()" onfocus="this.select()" onkeydown="QuickSearch()" runat="server"></asp:TextBox>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnSearchFilter" />
    </Triggers>
</asp:UpdatePanel>
但是在这种情况下,我仍然需要在btnSearchFilter_click事件结束时使用update()方法手动更新UpdatePanel。
在代码隐藏上注册触发器时,有没有办法自动更新面板?

我找到了解决此问题的方法。事实证明,您实际上不需要使用
RegisterAsyncPostBackControl
方法注册控件

如果在运行时找不到控件,只需在
Page_Init
事件中添加触发器,并使用
控件.UniqueID

因此,aspx将如下所示:

<asp:UpdatePanel ID="uptxtQuickSearch" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" style="height: 100%;">
    <ContentTemplate>
        <asp:TextBox ID="txtQuickSearch" CssClass="textinput" onmouseover="this.select()" onfocus="this.select()" onkeydown="QuickSearch()" runat="server"></asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>

如果可能的话,我鼓励您远离UpdatePanel和asp.net中使用ajax的旧方法。我发现用javascript编写ajax要容易得多。谢谢你的反馈,你是说喜欢使用jQuery.ajax方法吗?我知道这在资源方面是明智的,但我看不到其中“更易于管理”的部分,你能帮我找到一个详细解释它的网站吗?网上有几个教程。这里有一个例子:updatepanels/asp.net ajax toolkit的缺点是,它将ajax抽象到许多开发人员无法完全理解它的概念的地步。我还发现它缺乏灵活性。
<asp:UpdatePanel ID="uptxtQuickSearch" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" style="height: 100%;">
    <ContentTemplate>
        <asp:TextBox ID="txtQuickSearch" CssClass="textinput" onmouseover="this.select()" onfocus="this.select()" onkeydown="QuickSearch()" runat="server"></asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>
protected void Page_Init(object sender, EventArgs e)
{
    uptxtQuickSearch.Triggers.Add(new AsyncPostBackTrigger() { ControlID = btnSearchFilter.UniqueID });
}