繁体   English   中英

从子页面设置母版页上的 DropDownList 选定值

[英]Set DropDownList selected value on master page from child page

尝试类似的东西

public string MyText { get {return lbl.Text;} set {lbl.Text = value;}}

取自这个问题以异常结束:

public string change_ddlArea { get { return ddlArea.SelectedItem.Text; } set { ddlArea.Items.FindByValue(value).Selected = true; } }

--> Object 引用未设置为 object 的实例。

使用这些通常会导致相同的错误:

this.ddlEnergyType.Items.FindByValue(resourceTypeVal).Selected = true;
((DropDownList)Master.FindControl("ddlArea")).Items.FindByValue("all").Selected = true;

我很难在谷歌上找到这个问题的答案。 应该可以工作,如果 label 操作确实如此,那么移动到 ddl 也可以吗?

可能是问题的一个区别是尝试调用它时..(在第二个代码块中)我使用

Master.change_ddlArea = sendoff_area;

在上述链接中,它是这样完成的

((MasterPageTypeName)Page.MasterPage ).MyText = "test";
//so mine would look like this:
((GAWMaster)_default.Master).change_ddlArea = "all";

但是智能感知缺少“.Master” - 将其放入会导致信息出现:非静态字段、方法或属性需要 object 引用....

tl,博士:暂停

至少可以说,您的问题非常令人困惑。 做你的标题要求的事情非常简单:

首先在你的MasterPage代码后面做:

public string change_ddlArea
{
    get { return ddlArea.SelectedItem.Value; }
    set { ddlArea.Items.FindByValue(value).Selected = true; }
}

然后在您的子页面中定义您的MasterPage类型,以便它可以“看到” MasterPagechange_ddlArea属性。 有关更多参考信息,请参见此处。

<%@ MasterType virtualPath="~/MasterPage.master"%>

然后在您的子页面上的代码中,您应该能够:

Master.change_ddlArea(someValue); 

您设置的值必须存在,否则您将收到 object 参考错误。 确保您的DropDownList已正确加载,并且您的操作没有乱序。 此外,如果您不使用ViewState并执行PostBack ,请确保在设置值之前已重建DropDownList

.NET 中的母版页只是 class,对吧? 让我们以这种方式来看看它。 您的页面使用该母版页。 但这意味着您的页面具有该母版页,而不是该母版页。 因此,理论上您应该能够从您的页面中获得对该母版页的引用。 让我们用其他词来更清楚地说明:

 // This is like the master page
 public class Hand
 {
 }

 // This is like the page. Please notice that a human **has** hands, but a human **is** not hand.
 public class Human
 {
     Hand leftHand = new Handl();
 }

现在,想想。 是否可以通过人类 class 的实例接触手指? 你看到这里的逻辑了吗? 当然,您可以参考 Hand class,然后您可以参考手指:

 Human jack = new Human();
 jack.Hand.Fingers["SmallFinger"].Cut();

现在,如果您的手是一种特殊类型的手(其中包含 label 的特殊母版页?)。 你只需要一个演员表

 ((ExpensiveHand)jack.Hand).Rings.Steal();

这就是页面和母版页之间的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM