2

マスター ページにドロップダウン リストがあり、コンテンツ ページの読み込み時に選択した値をコンテンツ ページに渡したいと考えています。私の問題は、ドロップダウンリストの値を変更した場合にのみ値が渡されることです。そのため、ページが読み込まれると、ドロップダウンリストから再選択してドロップダウンの値を取得する必要があります。コンテンツ ページを閲覧している場合、選択した値がページの読み込み時に渡されません。私のマスターページコード.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);                 
}
4

2 に答える 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;
}

注: 値は説明のためのものです。ドロップダウンで実際のデータ ソース値を使用できます。

于 2013-07-22T09:33:17.203 に答える