我无法找出一些应该简单的东西,但我无法弄清楚。
我有一个包含WebTab控件的页面(Default.aspx)(Infragistics,但实际上并不重要)。在WebTab的每个Tab Control内部是另一个页面,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 codebehind做回发,因为我有一个参数需要传递到下一页,我想打开第二个标签内的Page2.apx。
基本上,我认为我需要执行以下步骤。 1.将“活动”选项卡设置为WebTabControl(1) 2.给它一个参数,让我为它做一些事情。
我知道一旦有人告诉我怎么做,我就得开枪自杀:-) 谢谢!
答案 0 :(得分:0)
Ok AFAICU,WebTab控件具有WebTab,每个webtab都有页面。试试这个:
如果你不需要Postback那么做一件事,在tab事件的tab事件或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.
答案 1 :(得分:0)
非常感谢您的回复,但这不是我想要的。
我实际上解决此问题的方法是在Default.aspx页面中创建一个JavaScript函数,我可以从Page1.aspx调用它。
这是Default.aspx页面中的函数,该页面激活了我需要的选项卡,并使用Page1.aspx中WebDataGrid所需的值填充了搜索框。
<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中的activateTab()函数,该函数是从WebDataGrid的DoubleClick事件中调用的(我需要从所选行中获取值。)
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);
}
下一步是在Page.aspx上从Default.aspx上的activateTab()函数调用此JavaScript函数,如第一个代码示例所示。
//Force a Postback
function DoSearch(id) {
HideSearch();
__doPostBack("WebDataGrid1", id);
}
这实际上做了我需要的帖子,这就是我所要做的一切。如果我想将这些2 __doPostBack()值传递给Page2.aspx Page_Load事件,我将不得不执行以下操作。但是在我的情况下,Post back就是我所需要的,因为我已经填充了搜索框。
//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,所以我希望它对那里的其他人有用。
由于 戴夫