2

我有一个“旧”的 ASP.NET 站点,我想改进一下。我想做的一个领域是页面更新——现在,它总是整页更新,但我想开始使用部分更新。

我希望能够为此使用 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和两个DropDowns. 每当这些控件中的某些内容发生更改时,现在都会发出回发(它们已AutoPostback="true"设置)。

我的问题是:我如何告诉我的UpdatePanel(我试图在该区域中环绕我的网格cphContent)“监听”来自这三个控件的回发cphSearch

<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 上拥有所有页面通用的搜索控件。一种方法是从您的母版页公开一个事件并在您的内容页上处理它。检查这个

在您的 DDL selectedIndexChanged 事件中,您引发此事件。在 contentPage 上此事件的处理程序中,您调用 updateContent.Update()。

我认为解决方案就在这些方面。

于 2011-04-15T20:59:43.200 回答