私は2つのUpdatePanelsとページを持っている:ポストバックコントロールが最初のパネル内のListViewであり別のUpdatePanelからのポストバック後にUpdatePanelを表示して更新しますか?
<asp:UpdatePanel id="ListUpdatePanel" runat="server" UpdateMode="conditional">
<ContentTemplate>
<asp:ListView ... </asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel id="DetailUpdatePanel" runat="server" UpdateMode="conditional">
..
</asp:UpdatePanel>
。何が起こる必要があるのは、ページがListViewからイベントを取得し、ページがモードを切り替える必要があるときです。コードは、その時点で2番目のパネルを表示して更新する必要があります。コマンドイベントが、その後、編集を設定するプロパティPageMode
が発生します。
protected override void OnPreRender(EventArgs e)
{
ListPanel.Visible = PageMode == PageModes.List;
EditPanel.Visible = PageMode == PageModes.Edit;
if (PageMode == PageModes.Edit)
{
EditUpdatePanel.Update();
}
else
{
ListUpdatePanel.Update();
}
base.OnPreRender(e);
}
しかし、それは働いていないが、私はこのエラーを取得する: ScriptResource.axd:868Uncaught Sys.InvalidOperationException:IDとのUpdatePanelを見つけることができませんでした ' ctl00_ctl11_DetailUpdatePanel '。動的に更新されている場合は、別のUpdatePanel内にある必要があります。
私のパネルが自動に設定されている場合、これが期待されます。私はここにはあまり入らない何かがあるように感じます。ポストバックがUpdatePanelの内部から発生した場合、それがConditionalに設定されていても、そのコントロールは何とかそのUpdatePanelに結びついていますか? asp.netに特定のUpdatePanelを「中断」させる方法はありますか?完全なポストバックは実行しないでください。
これは両方とも同じUpdatePanelにあったものですが、詳細パネルから特定の状況でサブミットをブロックするロジックを実装しなければならないため、これらを分離する必要があります。それらは同じUpdatePanelにあります。私はいつも両方をレンダリングすればうまくいくと思っていますし、CSSを使ってユーザーが特定のモードで操作したくないものを隠すことができます。あるいは、両方を外側のUpdatePanelに配置します。しかし、それは無駄な帯域幅のように思えますが、これを私が望むように動作させる方法があることを願っています。
マニュアルコントロールはまったく同じではありませんか?私は同じエラーが出る気がします。 –
私は、updatepanleは部分的なレンダリングしかしないので、リクエストとともに他のpanleを送信することさえできないと思います。 – XtremeBytes