在page_load时,在内容页上传递主页面控制值。

问题描述 投票:2回答:2

我在主页面上有一个下拉列表,我想在内容页面加载时将选择的值传递到内容页面上。我的问题是,只有当我改变dropdownlist上的值时,该值才会传递。因此,当页面加载时,我必须从下拉列表中重新选择以获取下拉列表的值。如果我在浏览内容页时,所选的值在页面加载时不通过。我的主页面代码.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);                 
}
c# asp.net master-pages
2个回答
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;
}

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


1
投票

您的问题是由于 "内容页加载 "发生在 "主页面加载 "之前,您无法访问dropdownlist项目。

为了解决这个问题,你可以先在主页面中绑定你的dropdownlist,但不在 "MasterPage load "中绑定,你可以在 "MasterPage Init "事件中绑定,该事件发生在 "ContentPage Init "和 "MasterPage Load "事件之前。

    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"]);
}
© www.soinside.com 2019 - 2024. All rights reserved.