UpdatePanel的部分渲染回调后没有触发的链接按钮

时间:2017-05-24 21:58:42

标签: javascript c# asp.net ajax asp.net-ajax

我在asp:UpdatePanel中有一些代码,点击一个按钮后。它将隐藏标签并用可编辑的文本框替换它。此功能在UpdatePanel中都可以正常工作,但是在单击此按钮进行调用(也在UpdatePanel内部)之后,它会导致在UpdatePanel之外和之外出现的asp:LinkBut​​tons不再起作用。这些链接在与UpdatePanel内部的控件交互之前工作,但在事后停止工作。值得注意的是,这些链接按钮是动态创建的,并附加到后面的现有div中,并且不在UpdatePanel内部导致此问题。为了更好的衡量,我尝试调用方法,每当更新面板回调服务器时动态创建并附加这些控件,但无济于事。

        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server" />   
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <label class="reportModeLabel">Primary Mode: </label>
                    <div id="divShowMode" runat="server" class="inlineItem">
                        <asp:Label ID="lblPrimaryMode" runat="server"></asp:Label>
                        <asp:LinkButton ID="lnkPrimaryMode" runat="server" CssClass="clickOnce" OnClick="lnkPrimaryMode_Click">
                            <asp:Image ID="imgChangePrimaryMode" runat="server" CssClass="imgReportUpdateMenuItem" ImageUrl="~/Images/Edit.png" />
                        </asp:LinkButton> 
                    </div>
                    <div id="divUpdateMode" runat="server" class="inlineItem" >
                        <asp:DropdownList ID="ddlModeOfTransmission" runat="server" Width="40%" CssClass="metaItemDropdown">                                    
                            <asp:ListItem Text="Food" Value="1"></asp:ListItem>
                            <asp:ListItem Text="Water" Value="2"></asp:ListItem>
                            <asp:ListItem Text="Animal" Value="3"></asp:ListItem>
                            <asp:ListItem Text="Person to Person" Value="4"></asp:ListItem>
                            <asp:ListItem Text="Environmental" Value="5"></asp:ListItem>
                            <asp:ListItem Text="Other/Unknown" Value="6"></asp:ListItem>
                        </asp:DropdownList>
                        <asp:LinkButton ID="lnkPrimaryModeSave" runat="server" CssClass="clickOnce" OnClick="lnkPrimaryModeSave_Click">
                            <asp:Image ID="imgPrimaryModeSave" runat="server" ImageUrl="~/Images/Check-Selected.png" />
                        </asp:LinkButton> 
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>           
        </div>

<div class="divWizardMenu">
    //The link button controls that no longer work after using the 
    //UpdatePanel are dynamically created on server and added here
    <ul id="ulMainMenu" runat="server"/>
</div>


    //UpdatePanel ajax calls
    protected void lnkPrimaryMode_Click(object sender, EventArgs e)
    {
        divShowMode.Visible = false;
        divUpdateMode.Visible = true;
        ddlModeOfTransmission.SelectedValue = Record.PrimaryModeOfTransmissionID.ToString();
    }

    protected void lnkPrimaryModeSave_Click(object sender, EventArgs e)
    {
        divUpdateMode.Visible = false;
        divShowMode.Visible = true;
    }

1 个答案:

答案 0 :(得分:0)

您是否在创建动态创建的LinkBut​​tons时为其分配ID?

我认为他们需要设置ID才能在Postback上重新启动事件。