从子页设置母版页上的下拉列表选定值

本文关键字:下拉列表 设置 母版页 | 更新日期: 2023-09-27 18:01:16

尝试

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; } }

——>对象引用未设置为对象的实例。

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

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

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

一个可能的问题是当尝试调用这个…(在第二个代码块中)我使用

Master.change_ddlArea = sendoff_area;

在前面提到的链接中是这样做的

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

然而,智能感知缺少'。Master' -将其放入会导致信息出现:非静态字段、方法或属性需要对象引用....

想买

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); 

你设置的值必须存在,否则你会得到一个对象引用错误。确保你的DropDownList是正确加载的,你没有做无序的事情。另外,如果您不使用ViewState而使用PostBack,请确保在设置值之前重新构建了DropDownList

.NET中的母版页只是一个类,对吗?让我们从这个角度来看。您的页面使用该母版页。但这意味着您的页面母版页,而不是母版页。因此,从理论上讲,您应该能够从页面中获得对该母版页的引用。让我们用其他的词来表达得更清楚:

 // 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();
 }

现在,思考。有可能通过人类类的实例得到手指吗?你明白这里的逻辑了吗?当然,您可以获得对Hand类的引用,并从那里获得对fingers的引用:

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

现在如果你的手是一个特殊类型的手(特殊的母版页,其中有一个标签?)你所需要的只是一个强制转换

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

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