是否有可能访问的一个元件在一个主页,从该网页载入内 ContentPlaceHolder 对于主?

我有一个列表视图,其中列出了人的名字在一个导航区域上的主页。我想要更新的列表视图在一个人已经加入该表,列表视图的数据结。的 ListView 目前没有更新它的价值,直到该缓重新加载。我们已经发现刚刚重新运行 ListView.DataBind() 将更新的一列表视图的内容。我们没有能够运行的 ListView.DataBind() 在一个页面上使用的主页。

下面是一样的我想做的事但一个编译器的错误说

"PeopleListView不存在在目前上下文中"

地理信息系统。主在那里驻留的列表视图

...<asp:ListView ID="PeopleListView"...

GISInput_People.aspx-使用地理信息系统。主作为它的主页

GISInput_People.aspx。cs

AddNewPerson()
{
    // Add person to table
    ....

    // Update Person List
    PeopleListView.DataBind();
    ...
}

什么是最好的方式来解决的一个问题像这样的。净?

有帮助吗?

解决方案

我相信你 可能 通过使用这个。掌握。FindControl或类似的东西,但你可能不该-它需要的内容页知道的太多了有关结构的主页。

我建议另一种方法,例如击事件在内容的区域主可以听取和重新结合当被解雇。

其他提示

假设控制被称为"PeopleListView"在主页

ListView peopleListView = (ListView)this.Master.FindControl("PeopleListView");
peopleListView.DataSource = [whatever];
peopleListView.DataBind();

但@palmsey 更正确的,特别是如果页面上可能具有的可能性的一个以上的主页。分离它们,并使用一个事件。

备选案文1:你可以创建公共财产的主页控制

public TextBox PropMasterTextBox1
{
    get { return txtMasterBox1; }
    set { txtMasterBox1 = value; }
}

访问的内容页喜欢

Master.PropMasterTextBox1.Text="SomeString";

备选2:在主页:

public string SetMasterTextBox1Text
{  
    get { return txtMasterBox1.Text; }
    set { txtMasterBox1.Text = value; }
}

关内容的页面:

Master.SetMasterTextBox1Text="someText";

备选案文3:你可以创建的一些公共方法,为你工作


这些做法是不那么有用,但它可以帮助如果你只是想用一些有限和预定的控制

一个想要记住的是下面ASP.NET 指令。

<%@ MasterType attribute="value" [attribute="value"...] %>

MSDN参考

它会帮助你的时参考这一点。主通过创建一个强类型的参考的主页。然后你可以引用你的列表视图,而无需投。

你可以访问的代码这一点。掌握。FindControl(ControlID)其控制你的愿望。它将返回参考的控制,因此,变化是有效的。关于射击的事件很可能不可能每个情况。

假设你的主页被任命为MyMaster:

(Master as MyMaster).PeopleListView.DataBind();

编辑: 由于PeopleListView将被宣布保护的默认情况下,将需要改变这种公众,或者创建一个公共财产包装,以便可以访问它自己的网页。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top