2013-07-22 64 views
2

我在主页面上有一个下拉列表,并且我想在加载内容页面时在内容页面上传递选定的值。我的问题是,只有当我更改下拉列表中的值时,该值才会通过。因此,当页面加载时,我必须从下拉列表中重新选择以捕获下拉列表的值。如果我正在浏览内容页面,则选定的值不会在页面加载时传递。 我的母版页代码.NET:在page_load的内容页上传递主页面控制值

<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);     
} 
+0

在页面加载时,您在DDL中寻找什么值?为什么使用Session对象?您正在选定的索引更改中设置DDL中所选值的值,这就是它现在才显示的值。我不确定你为什么这样做。 –

+0

你是否在页面标记中声明了主页的确切类型? – Alexander

+0

你好,我正在宣布关于标记的mastr页面。我已经设置了选定的值,以便在用户浏览时保持选择。如果让你感到困惑,我可以评论它。会议并不重要。我正在呼叫主控,而不是会话。我找到了这个链接,但答案对我无用。 http://stackoverflow.com/questions/5933929/page-load-event-in-master-and-content-pages?rq=1 – focus

回答

3

尝试这种解决方案:

母版页:

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

注意:值只是为了演示,您可以在下拉菜单中使用实际的数据源值。

+0

我在内容页面上发生此错误:System.Web.UI.MasterPage不包含'SelectedValue'的定义并且没有扩展方法'SelectedValue' – focus

+0

您需要在内容页面标记“<%@ MasterType VirtualPath =”〜/ Site1.Master“%>”之上声明MasterType指令以访问母版页属性。您是否对内容页面的代码中的母版页的SelectedValue属性感到厌倦? – Nexus23

+0

我有这个声明MasterPageFile =“〜/ mypath/mymaster.Master” 不,我没有采取intellisence – focus

相关问题