ボタンをクリックした後のasp:UpdatePanelの内部にコードがあります。ラベルを非表示にして編集可能なテキストボックスに置き換えます。この機能はすべてUpdatePanel内で正常に機能しますが、このボタンをクリックして(UpdatePanelの中にもあります)このボタンをクリックすると、UpdatePanelの外と外に表示されるasp:LinkButtonsがもう動作しなくなります。これらのリンクは、UpdatePanel内部のコントロールと対話する前に機能しますが、事実の後には動作しません。これらのリンクボタンは動的に作成され、この問題を引き起こす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;
}
はい、LinkButtonには、サーバー上で動的に作成されたときにIDが割り当てられます。私はさらに、各UpdatePanel呼び出しの終わりに階層の作成を再呼び出ししようとしました。 –
問題は、すべてのポストバック後にイベントを再配線する必要があるが、動的に作成されたボタンが更新パネル外にあるため、更新パネルの部分ポストバックに影響しないためです。 Page_Initにイベントワイヤを入れてみることもできますが、最も簡単な方法は、更新パネル内でdivWizardMenuを移動することです –