使用第二个UpdatePanel的gridview中的LinkBut​​ton从第一个UpdatePanel更新文本框.无法找到控制权

Har*_*ter 9 c# asp.net gridview triggers updatepanel

我需要btnAddRow在UpdatePanel中添加LinkBut​​ton ,upSectionB但问题是我在加载期间遇到此错误:

在UpdatePanel'updownSectionB'中找不到ID为"btnAddRow"的控件.

我简化的aspx

<asp:UpdatePanel ID="upSectionB" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
    <ContentTemplate>
        Request Budget (USD)
        <asp:TextBox ID="txtTotal" runat="server"></asp:TextBox>

    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnAddRow" EventName="Click" />
        //Poses problems when I uncomment the trigger above. btnAddRow is a LinkButton inside upSectionC
    </Triggers>
</asp:UpdatePanel>

<asp:UpdatePanel ID="upSectionC" runat="server">
    <ContentTemplate>
        <asp:GridView ID="gvCostBreakdown" runat="server" AutoGenerateColumns="false" ShowFooter="true">
            <Columns>
                <asp:TemplateField HeaderText="Amount">
                    <ItemTemplate>
                        <asp:TextBox ID="txtAmount" runat="server" Text='<%# Eval("BudgetUSD") %>'></asp:TextBox>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtAmountTotal" runat="server" Enabled="false"></asp:TextBox>
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <asp:LinkButton ID="btnDeleteRow" runat="server" ToolTip="Delete" OnClick="btnDeleteRow_Click" CommandArgument='<%# Eval("Id","{0}") %>' OnClientClick="">Delete</asp:LinkButton>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:LinkButton ID="btnAddRow" runat="server" CausesValidation="true" ValidationGroup="vgAddRow" ToolTip="Add Row" OnClick="btnAddRow_Click">Add Row</asp:LinkButton>
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

VDW*_*WWD 2

您唯一需要做的就是单击upSectionB时触发更新。btnAddRow

protected void btnAddRow_Click(object sender, EventArgs e)
{
    txtTotal.Text = "new value";

    //update the other updatepanel
    upSectionB.Update();
}
Run Code Online (Sandbox Code Playgroud)

出现该错误的原因是该按钮位于 GridView 控件中,因此无法在 aspx 页面的范围内访问。如果您想使用页脚中的按钮执行某些操作,则需要使用 FindControl。

LinkButton lb = gvCostBreakdown.FooterRow.FindControl("btnAddRow") as LinkButton;
Run Code Online (Sandbox Code Playgroud)