非常感謝您的答覆,但是這不是我所期待的。
我真正解決這個問題的方法是在Default.aspx頁面創建一個JavaScript函數,我可以從Page1.aspx中調用該函數。
這是Default.aspx頁面中的函數,它激活了我需要的Tab,並使用WebDataGrid從Page1.aspx中需要的值填充搜索框。
<script type="text/javascript">
function activateTab(rowId, tabId) {
var tab = $find("WebTab1");
var ctl;
if (tabId == 3) {
ctl = window.frames.document.frames[tabId].window.document.getElementById("WebDialogWindow2_tmpl_txtAddressNumber");
}
else if (tabId == 2)
ctl = window.frames.document.frames[tabId].window.document.getElementById("WebDialogWindow2_tmpl_txtAccount");
if (ctl != null) {
ctl.value = rowId;
tab.set_selectedIndex(tabId, true, null);
window.frames.document.frames[tabId].window.DoSearch(rowId);
}
}
</script>
我然後能夠從Page1.aspx的用下面的函數,這是從所述的WebDataGrid DoubleClick事件稱爲調用activateTab()函數(我需要抓住從行選擇一個值。)
function doubleClickRow() {
var grid = $find("WebDataGrid1");
//Get the ADDRESS_NUMBER value.
var rowId = grid.get_behaviors().get_selection().get_selectedRows().getItem(0).get_cell(2).get_value();
window.parent.activateTab(rowId, 3);
}
下一個步驟是,如圖在第一代碼例如從activateTab上的Default.aspx()函數調用上Page2.aspx該JavaScript功能。
//Force a Postback
function DoSearch(id) {
HideSearch();
__doPostBack("WebDataGrid1", id);
}
這實際上做了後期,我需要這樣,這就是我所要做的。如果我想將這2個__doPostBack()值傳遞給Page2.aspx Page_Load事件,我將不得不執行以下操作。但在我的情況下,郵政回來是我所需要的,因爲我已經填入了搜索框。
//Don't need these right now, but just in case we might I'll leave them in.
string eventTarget = Page.Request.Params.Get("__EVENTTARGET");
string eventArgument = Page.Request.Params.Get("__EVENTARGUMENT");
Search();
對於那些誰不明白與__event *代碼的最後一部分,如果你使用一個ScriptManager,否則你必須編寫自己的參數,我不會進入這裏這是可能的。
就是這樣。我當然在這裏學習了一些JavaScript,所以我希望它對其他人有用。
感謝 戴夫
我還沒有想通了這一點,所以我從不同的角度看它。我可以在Default.aspx頁面中創建一個將訂閱Page1.aspx上的自定義事件的Listener? ..或者這只是一個糟糕的設計?我知道如果我用控件代替Page1和Page2,那麼我可以做我需要的。我只想知道是否可以使用我目前的設置,這樣我就不必重新編碼了。 – 2011-03-31 17:30:18