2

少し改善したい "レガシー" ASP.NET サイトがあります。私が何とかしたい分野の 1 つはページの更新です。今のところ、常にページ全体の更新ですが、部分的な更新の使用を開始したいと考えています。

私はこれに ASP.NET を使用できることを望んでいましたがUpdatePanel、これを機能させる方法に少しこだわっています。

いくつかのコンテンツ プレースホルダーを定義するマスター ページがあります。単純化すると、次のようになります。

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Default.master.cs" Inherits="WebForms_Default" %>
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>MyTitle</title>
</head>
<body>
   <form id="myForm" runat="server">
      <asp:ScriptManager ID="smgrMaster" runat="server" LoadScriptsBeforeUI="true">
         <Scripts>
            <asp:ScriptReference Path="~/Scripts/jquery-1.4.2.min.js" />
         </Scripts>
      </asp:ScriptManager>
      <asp:ContentPlaceHolder runat="server" ID="cphSearch" />
      <asp:ContentPlaceHolder runat="server" ID="cphContent" />
   </form>
</body>
</html>

私のコンテンツ ページでは、私のグリッドはcphContent領域内のデータを表示しています - そして私のcphSearch領域にはいくつかの入力コントロールがあります - aRadioButtonListと two DropDowns。これらのコントロールの何かが変更されるたびに、今のところ、ポストバックが発行されます (AutoPostback="true"設定されています)。

私の問題は、次の 3 つのコントロールからのポストバックを「リッスン」するようにUpdatePanel(エリア内のグリッドをラップしようとしている) にどのように指示するかです。cphContentcphSearch

<asp:UpdatePanel>
   <ContentTemplate>
      <asp:GridView>
         // grid view defined here
      </asp:GridView>
   </ContentTemplate>
   <Triggers>
      <asp:AsyncPostBackTrigger ControlID=".. what values to put here?? .." />
      <asp:PostBackTrigger ControlID=".. - what values to put here?? .." />
   </Triggers>

my を追加すると<asp:UpdatePanel>、 section<Triggers>が表示されますが、コンテンツ領域のそれらのコントロールがcphSearch表示されないため、更新トリガーとして実際に追加することはできないと思いますよね?

私はそれを完全に理解していません(絶対に可能です!)、またはこれを機能させるための明らかな手順/トリックが欠けているか、または単に不可能です。お知らせ下さい!

4

2 に答える 2

2

Triggersイベントのコントロールを見つけることができないときは、Triggers常に updatepanel を使用する必要はないと思います。triggers

<asp:Content ID="Content1" ContentPlaceHolderID="cphSearch" runat="Server">
  <asp:UpdatePanel ID="updateSearch" runat="server">
    <ContentTemplate>
       your searching controls
    </ContentTemplate>
  </asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cphContent" runat="Server">
  <asp:UpdatePanel ID="updateContent" runat="server">
    <ContentTemplate>
        your grid
    </ContentTemplate>
  </asp:UpdatePanel>
</asp:Content>

これにより、グリッド全体、検索コントロールが更新され、AutoPostBack イベントも処理さ<asp:UpdateProgress>れますが、作業が進行中であることを確認するために更新コントロールを配置することを忘れないでください...

于 2011-04-15T12:38:31.307 に答える
0

情報から、すべてのページに共通する MasterPage の検索コントロールを持っていると思います。1 つの方法は、マスターページからイベントを公開し、コンテンツページで処理することです。これを確認してください。

DDL selectedIndexChanged イベントで、このイベントを発生させます。contentPage のこのイベントのハンドラー内で、updateContent.Update() を呼び出します。

解決策は、これらの線のどこかにあると思います。

于 2011-04-15T20:59:43.200 に答える