2013-02-13 23 views
0

我有ASP.NET Web應用程序,其中包含母版頁。母版頁面包含內容頁面。內容頁面包含用戶控件。用戶控件包含Telerik網格及其上下文菜單。如何在代碼後面的彈出窗口中使用JavaScript變量?

我想單擊網格的上下文菜單中的項目,並打開新的彈出窗口模態窗口。在那個窗口中有下拉列表。我從下拉列表中選擇一些選項並單擊確定。我想從下拉列表中選擇所需的值,並在ASP.NET代碼中使用它以進一步處理。

我試過使用隱藏字段來存儲從下拉列表中的值,但它不起作用,因爲我不知道隱藏的字段應該放在哪裏。

有人可以幫助我使它工作嗎?

+0

那是'彈出模式window'一個'Radwindow',一個瀏覽器窗口或一個div? – yogi 2013-02-13 08:20:09

+0

這不是Radwindow。這是另一個ASPX頁面。 – tesicg 2013-02-13 08:30:17

+0

有人可以幫助解決這個問題嗎? – tesicg 2013-02-13 11:19:00

回答

0

如果您使用的是window.open(),您可以通過屬性window.opener查看父窗口,這會讓您在父頁面和彈出窗口之間進行通信。

如果您使用window.showModalDialog(),看到第二個回答這個問題:window.opener alternatives

+0

正如你可以從我在這裏發佈的代碼看到的,我已經嘗試使用window.opener,但它返回主頁面。我不需要母版頁。我需要訪問位於內容頁面中用戶控件內部的隱藏字段。我怎樣才能做到這一點? – tesicg 2013-02-13 08:42:59

0

這是我的代碼:

打開彈出窗口:

function ClientItemClicked(sender, eventArgs) 
{ 
    if (eventArgs.get_item().get_value() == "excel") 
    { 
     var retVal = window.showModalDialog("ExportToExcelChoice.aspx", null, "dialogWidth: 400; dialogHeight: 200; center: yes; resizable: no;"); 
    } 
} 

點擊「確定「關閉彈出窗口:

function ReturnValue() { 
    var choice = document.getElementById("DropDownList1").value; 
    if ((window.opener != null) && (!window.opener.closed)) { 
     window.opener.document.getElementById("HiddenField1").value = choice; 
    } 
    window.close(); 
} 

它在此行上失敗:

window.opener.document.getElementById("HiddenField1").value = choice; 

因爲隱藏字段放在用戶控件中,並且代碼無法獲取對隱藏字段的引用。

+0

此對象:window.opener.document.getElementById(「HiddenField1」)始終爲空。 – tesicg 2013-02-13 12:36:38

0

試試這個

window.opener.document.getElementById('<%= HiddenField1.ClientID %>').value = choice; 
+0

我已經試過了。它不起作用。 – tesicg 2013-02-13 09:43:11

+0

window.opener實際上是內容頁面。這意味着我應該訪問隱藏字段所在內容頁面中的用戶控件。怎麼做? – tesicg 2013-02-13 09:50:09

+0

或者也許有另外一種方法從彈出窗口中獲取選定的值?也許我不需要使用隱藏的領域。 – tesicg 2013-02-13 10:14:42

相關問題