2017-05-24 36 views
0

我點擊一個按鈕後,在asp:UpdatePanel中有一些代碼。它會隱藏一個標籤並將其替換爲可編輯的文本框。這個功能在UpdatePanel中都可以正常工作,但是在點擊這個按鈕進行調用後(它也在UpdatePanel中),它會導致在UpdatePanel之後和之外出現的asp:LinkBut​​tons不再工作。這些鏈接在與UpdatePanel內部的控件交互之前工作,但在事實之後停止工作。值得注意的是,這些鏈接按鈕是動態創建的,並附加到隨後的現有div上,而不在UpdatePanel內導致此問題。爲了更好的衡量,我嘗試調用動態創建並附加這些控件的方法,只要更新面板對服務器進行回調,但無濟於事。鏈接按鈕在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; 
    } 

回答

0

您是否在創建時爲您的動態創建的LinkBut​​tons分配了一個ID?

我認爲他們需要設置ID以便事件可以在回發時重新接線。

+0

是的,LinkBut​​tons在服務器上動態創建時正在分配ID。我甚至嘗試在每個UpdatePanel調用結束時重新調用層次結構的創建。 –

+0

問題在於每次回發後都必須重新連接事件,但由於動態創建的按鈕位於更新面板之外,因此它們不會在更新面板的部分回發中生效。您可以嘗試將事件連接放置在Page_Init中,但最簡單的方法是將「更新面板」中的divWizardMenu –

相關問題