我有一个“遗留”的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>
内容区域中的控件不可见,所以我想我无法真正添加它们如更新触发,更正?
要么我完全没有得到它(绝对可能!),或者我错过了一个明显的步骤/技巧来实现它 - 或者它是不可能的。让我知道!
答案 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()。
我认为解决方案就在这些方面。