|
首先谢一下,亭长先生的提示!{:soso_e144:},先说一下我为什么要实现这一的效果,
因为我的项目左边的导航菜单式动态生成的,第一次进来的时候,加载满足条件的菜单,用户点击,然后相关标签在,右边的Main区域显示相关页面,然后用户点击搜索,左边菜单又不一样了,但是菜单里的每个选项是一样的,比如(man下面有tab1,tab2)因为之前第一次进来的时候,tab1,tab2用户已经打开了,如果现在再次点击的话,页面时不会有相应的,所以,只有在点击搜索的时候,就把用户上一次已经打开的标签都关闭掉。
好了原因说完,下面直接上代码,
var mainTabStrip = Ext.getCmp('<%= mainTabStrip.ClientID %>');
var tabID = 'dynamic_added_tab' + node.id.replace('__', '-');
tabIdLists += tabID+",";
document.getElementById("tabIdArry").setAttribute("value", "" + tabIdLists + "");
mainTabStrip.addTab({
'id': tabID,
'url': href,
'title': node.parentNode.text + ' -> ' + node.text,
'closable': true,
'bodyStyle': 'padding:0;',
//'iconCls': 'icon_' + href.replace(/[^.]+\./, ''),
'tbar': new Ext.Toolbar({
items: ['->', openNewWindowButton, '-', refreshButton]
})
});
}这里是动态添加标签,并且给标签的Id赋值的,tabIdList是申明的一个var变量,把每次打开的tabId给tablists,然后在把tablists给隐藏域tabIdArry,这样我们在后台就能获得用户已经打开的标签的Id了
下面后台的就简单了
string tabs = tabIdArry.Text;
string [] tabIdArrys=tabs.Split(',');
foreach (var tabid in tabIdArrys)
{
PageContext.RegisterStartupScript(mainTabStrip.GetRemoveTabReference(tabid));
}
代码我就不分析了,大家都看得懂,
好了到此结束虽然不是什么鸟不起的分享,但毕竟是自己想办法解决的,所以想分享一下,望广大高手多多提意见。
|
|