[英]Pass master page control values on content page on page_load
我在母版页上有一个下拉列表,我想在加载内容页面时在内容页面上传递选定的值。 我的问题是该值仅在我更改下拉列表中的值时通过。 因此,当页面加载时,我必须从下拉列表中重新选择以捕获下拉列表的值。 如果我正在浏览内容页面,则所选值不会在页面加载时传递。 我的母版页代码 .net:
<asp:DropDownList ID="ddlcategories"
runat="server" DataSourceID="SqlDataSourcecategories" DataTextField="CategoryName"
DataValueField="CategoryID" AutoPostBack="True"
onselectedindexchanged="ddlcategories_SelectedIndexChanged"></asp:DropDownList>
母版页 cs:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlcategories.DataBind();
ddlcategories.Items.Insert(0, "Uncategorized");
ddlcategories.Items[0].Value = "0";
ddlcategories.SelectedValue = Convert.ToString(Session["lblCategoryID"]);
}
}
protected void ddlcategories_SelectedIndexChanged(object sender, EventArgs e)
{
Session["lblCategoryID"] = Convert.ToInt32(ddlcategories.SelectedValue);
}
内容页面 cs:
protected void Page_Load(object sender, EventArgs e)
{
Label10.Text = Convert.ToString(((DropDownList)Master.FindControl("ddlcategories")).SelectedValue);
}
试试这个解决方案:
母版页:
<asp:DropDownList ID="ddlcategories" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlcategories_SelectedIndexChanged">
<asp:ListItem>One</asp:ListItem>
<asp:ListItem>Two</asp:ListItem>
</asp:DropDownList>
母版页 CS:
public string SelectedValue
{
get
{
return ddlcategories.SelectedValue;
}
set
{
ddlcategories.SelectedValue= value;
}
}
protected void ddlcategories_SelectedIndexChanged(object sender, EventArgs e)
{
SelectedValue = ddlcategories.SelectedValue;
}
内容页面标记:
<%@ MasterType VirtualPath="~/Site1.Master" %>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
内容页 CS。
protected void Page_PreRender(object sender, EventArgs e)
{
Label1.Text = Master.SelectedValue;
}
注意:值仅用于演示,您可以使用下拉列表中的实际数据源值。
您的问题是“ContentPage 加载”发生在“MasterPage 加载”之前,您无权访问下拉列表项。
要解决此问题,您可以首先在母版页中绑定您的 drobdownlist,但不能在“MasterPage load”中绑定,您可以在“ContentPage Init”和“MasterPage Load”事件之前发生的“MasterPage Init”事件中绑定它。
protected void Page_Init(object sender, EventArgs e)
{
ddlcategories.DataBind();
ddlcategories.Items.Insert(0, "Uncategorized");
ddlcategories.Items[0].Value = "0";
ddlcategories.SelectedValue = Convert.ToString(Session["lblCategoryID"]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.