0
我點擊一個按鈕後,在asp:UpdatePanel中有一些代碼。它會隱藏一個標籤並將其替換爲可編輯的文本框。這個功能在UpdatePanel中都可以正常工作,但是在點擊這個按鈕進行調用後(它也在UpdatePanel中),它會導致在UpdatePanel之後和之外出現的asp:LinkButtons不再工作。這些鏈接在與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;
}
是的,LinkButtons在服務器上動態創建時正在分配ID。我甚至嘗試在每個UpdatePanel調用結束時重新調用層次結構的創建。 –
問題在於每次回發後都必須重新連接事件,但由於動態創建的按鈕位於更新面板之外,因此它們不會在更新面板的部分回發中生效。您可以嘗試將事件連接放置在Page_Init中,但最簡單的方法是將「更新面板」中的divWizardMenu –