如何在不同的选项卡上激活页面内的不同选项卡并对其执行回发
我很难找出应该很简单但我无法解决的问题。如何在不同的选项卡上激活页面内的不同选项卡并对其执行回发
我有一个页面(Default.aspx)其中包含WebTab控件(Infragistics,但应该不是真的)。里面的WebTab的每个选项卡控件是另一个页面,Page1.aspx的,Page2.apx,所以它是这样的:
Default.aspx
WebTab
WebTabControl(0)
Page1.aspx <-- I'm in this codebehind after
calling __doPostBack from JavaScript
as I have a parameter from a WebDataGrid.
WebTabControl(1)
Page2.aspx <-- I want to open this page and pass it a parameter.
我在Page1.aspx的代码隐藏在做一个回传,因为我有我需要的参数传递到下一页,我想打开第二个选项卡中的Page2.apx。
基本上,我想我需要做以下步骤。 1.将“活动”选项卡设置为WebTabControl(1) 2.给它一个参数,我可以用它来做些事情。
我知道一旦有人告诉我该怎么做,我必须自己开枪:-) 谢谢!
非常感谢您的答复,但是这不是我所期待的。
我真正解决这个问题的方法是在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,所以我希望它对其他人有用。
感谢 戴夫
好的AFAICU,WebTab控件有WebTab,每个webtab都有页面。试试这个:
- 添加控件的自动回发功能。为了调用下一个选项卡,它会自动加载aspx页面。
-
如果你不需要回发,那么做一件事,在tab控件的click事件或tab change事件中添加查询字符串中的某个参数。像page.aspx?tab = 1。现在的网页加载事件,使用逻辑下面
1. Check if Request[tab] is not null. 2. use int.tryparse and get the tab number. 3. Now on the basis of the load the tab and the page. And make the tab active.
我还没有想通了这一点,所以我从不同的角度看它。我可以在Default.aspx页面中创建一个将订阅Page1.aspx上的自定义事件的Listener? ..或者这只是一个糟糕的设计?我知道如果我用控件代替Page1和Page2,那么我可以做我需要的。我只想知道是否可以使用我目前的设置,这样我就不必重新编码了。 – 2011-03-31 17:30:18