2014-02-19 21 views
1

頁1 - Ticket.aspxDropDownList1ModalPopUpextender ID爲mpe訪問其他網頁控制從本頁

頁2 - Customer.aspx,下拉的btnSave

指數變化事件,會彈出mpe它有一個iframe。這iframe加載Customer.aspx

我試圖訪問按鈕點擊事件中的page1控件,但無法訪問。

Customer.aspx.cs:

protected void btnSave_Click() 
{ 
    Ticket page = new Ticket(); 
    ModalPopUpExtender mpe = (ModalPopUpExtender)page.FindControl("mpe"); 
    DropDownList ddl = (DropDownList)page.FindControl("DropDownList1"); 

    //error here - Object reference not set to an instance 

    mpe.hide(); 

    ddl.selectedindex=0; 
} 

這是爲什麼不工作。使用Session變量應該正確嗎?

+3

也許最好在iframe中打開帶有所需參數的Customer.aspx頁面?像'Customer.aspx?someId = 123'。在該頁面上,您可以從Request.Query中獲取它,然後在您的邏輯中使用它 –

+2

如果不使用Server.Transfer來顯示page2並通過'PreviousPage'屬性顯示,則無法從服務器端訪問不同的頁面。您可能可以通過javascript在客戶端訪問它。一旦它們被渲染,頁面就被放置在服務器上。 –

+0

@Sergey。我需要訪問Modal和DropDown。我應該怎麼做,請用字符串參數。可能嗎。 – Ruby

回答

0

您可以使用Server.Transefer而不是Response.Redirect,然後您可以在當前頁面中找到該控件。 像:

TextBox tb = (TextBox)PreviousPage.FindControl("textbox1"); 

編輯:

if (Page.PreviousPage != null) 
{ 
    DropDownList ddl1 = 
     (DropDownList)Page.PreviousPage.FindControl("DropDownList1"); 
    if (ddl1 != null) 
    { 
     Label1.Text = ddl1.SelectedItem.Text; //your logic 
    } 
} 
+0

我沒有轉移該頁面。應該在彈出窗口中顯示第二個。 – Ruby

+0

解釋一下更多...... –

+0

如果你想在iframe中使用dropdownlist的數據,那麼你也可以使用ViewState。 –

0

你正在嘗試可能無法從服務器端可行的,但它可以很容易地用一些JavaScript來實現。這裏有一個link,你可以在那裏得到一段代碼。

希望這會有所幫助。