UpdatePanel和母版页中的两个内容占位符区域

时间:2011-04-15 12:29:55

标签: asp.net asp.net-ajax updatepanel partial-page-refresh

我有一个“遗留”的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区域中我有许多输入控件 - RadioButtonList和两个{{ 1}}。每当这些控件中的某些内容发生更改时,就会发布一个回发(它们已设置DropDowns)。

我的问题是:如何告诉我的AutoPostback="true"(我试图在UpdatePanel区域中包围我的网格)来“监听”来自{{{3}的这三个控件的回发1}}?

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> 部分,但<asp:UpdatePanel>内容区域中的控件不可见,所以我想我无法真正添加它们如更新触发,更正?

要么我完全没有得到它(绝对可能!),或者我错过了一个明显的步骤/技巧来实现它 - 或者它是不可能的。让我知道!

2 个答案:

答案 0 :(得分:2)

我认为没有必要在Triggers找不到Triggers某个事件的控件时始终放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> 的更新面板

<asp:UpdateProgress>

这会更新整个网格,搜索控件,它也会处理AutoPostBack事件但dnt忘记放置Update {{1}}控件以查看正在进行的工作......

答案 1 :(得分:0)

根据这些信息,我假设您在MasterPage上拥有所有页面共有的搜索控件。一种方法是从您的母版页公开事件并在您的内容页面上处理它。检查this

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

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