2013-07-22 101 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

相關問題