Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从内容页重新绑定转发器(母版页内)?_C#_Asp.net_Master_Data Binding - Fatal编程技术网

C# 如何从内容页重新绑定转发器(母版页内)?

C# 如何从内容页重新绑定转发器(母版页内)?,c#,asp.net,master,data-binding,C#,Asp.net,Master,Data Binding,是否可以从内容页重新绑定转发器(母版页内)? 我的网页是基于母版和内容页,我有一些链接(锚)下载文件 点击这些链接后,页面将启动内容加载页面,并显示下载窗口。 但我们永远不会得到母版页的页面加载,在母版页中我有一个显示下载数量的摘要。 在显示下载窗口之前,如何从内容页重新绑定该摘要(母版页内) 正确的方法是让用户控件触发母版页订阅的事件。如果您需要一些示例代码,请告诉我 一些示例代码: 在用户控件中,添加以下事件: 请求公共事件事件处理程序刷新 用户控件将在需要刷新时通过调用以下方法引发此事件:

是否可以从内容页重新绑定转发器(母版页内)?
我的网页是基于母版和内容页,我有一些链接(锚)下载文件

点击这些链接后,页面将启动内容加载页面,并显示下载窗口。
但我们永远不会得到母版页的页面加载,在母版页中我有一个显示下载数量的摘要。

在显示下载窗口之前,如何从内容页重新绑定该摘要(母版页内)

正确的方法是让用户控件触发母版页订阅的事件。如果您需要一些示例代码,请告诉我

一些示例代码:

在用户控件中,添加以下事件:

请求公共事件事件处理程序刷新

用户控件将在需要刷新时通过调用以下方法引发此事件:

private void OnRefreshRequested()
{
    //make sure the event is being listened to. no point raising an event if no one cares!
    if (this.RefreshRequested != null)
    {
        this.RefreshRequested(this, EventArgs.Empty);
    }
}
现在,母版页将订阅用户控件的事件并相应地进行操作。订阅该事件就像订阅任何其他事件一样(即:单击按钮)


如果这能解决问题,请告诉我。

是的。您可以使用
this.master
从web表单访问母版页,然后必须将其转换为适当的类型。从那里,您可以访问您定义的任何公共方法或属性

简单地添加一个
ReBind
方法,该方法可以满足您的需要,您应该很乐意去做

编辑

可能是这样的:


(this.Master与YourRealMasterPage的类型相同)。重新绑定()

您可以向子级公开母版页控件。使用母版页中的访问者公开控件。。。例如:

public Repeater MasterpageRptr {get;set;}
然后在子页面上,添加主类型定义:

<%@ Page Language="C#" Title="Content Page" MasterPageFile="~/MyMaster.master"%>
<%@ MasterType TypeName="MyMaster" %>

(where MyMaster is the master page class file)

(其中MyMaster是母版页类文件)
然后,您可以使用访问器在您的子代码后面调用它


如果有帮助,请投票。

是的,很简单。您可以从内容页“查找”控件。 下面是一个绑定到GridView控件的示例

大师:

<asp:GridView runat="server" ID="gridViewMaster" AutoGenerateColumns="true" />
只需将网格视图对象和控件id替换为中继器…并将其绑定到所需的任何对象

编辑-以下是查找服务器端div的代码:

var divMaster = (System.Web.UI.HtmlControls.HtmlGenericControl)Master.FindControl("divMaster");
divMaster.InnerHtml = "<h2>Hello World</h2>";
var divMaster=(System.Web.UI.HtmlControls.HtmlGenericControl)Master.FindControl(“divMaster”);
divMaster.InnerHtml=“你好世界”;

谢谢您的回答/请给我看一些代码!谢谢你的编辑,你的RealMasterPage是什么类型的->我怎么能找到?我尝试过(将此.Master作为母版页);但是有错误!转到母版页后面的代码。您应该能够在那里看到类名。这就是母版页类的类型。谢谢你的帮助。可以为服务器端div做这项工作吗?亲爱的Ed B,真的谢谢。是否可以为服务器端div执行此任务?是的,其工作方式相同。只需将div添加到master。然后在内容页上找到它。我已经添加了代码来查找上面的服务器端div,我测试了这个>var SummaryContainer=Master.FindControl(“SummaryContainer”);SummaryContainer.DataBind();但那个div从不向我显示新的结果,我应该点击页面中的按钮来获取结果。
var divMaster = (System.Web.UI.HtmlControls.HtmlGenericControl)Master.FindControl("divMaster");
divMaster.InnerHtml = "<h2>Hello World</h2>";