先说一下项目中遇到的问题,在index页面加了
function Read() {
$('#tabs').tabs({ onSelect: function (title) { var currTab = $('#tabs').tabs('getTab', title); var iframe = $(currTab.panel('options').content); var src = iframe.attr('src'); if (title != null) { if (title != "欢迎使用" && title != "添加商品") { $('#tabs').tabs('update', { tab: currTab, options: { content: createFrame(src)} }); } } } }); }此方法用处为点击tab页,选中的tab页内容自动刷新(除欢迎使用和添加商品页面)。
但是商品管理页面有一个编辑商品,点击编辑商品不关闭编辑商品(添加商品)页,如果再从商品管理页中点击编辑商品,则编辑商品页面显示的为第一次打开编辑商品的内容,不合理的要求。
解决办法:
1、编辑商品方法:
function Edit(id, type) {
var tabTitle = "编辑商品"; var url = "/Admin/ProductGoods/AddProduct.aspx?ID=" + id; var icon = "icon-addproduct"; var hasTab = window.parent.$('#tabs').tabs('exists', tabTitle); if(hasTab==true){ $.ajax({ type: "Post", async: false, url: "../../qyjx/WebServices.aspx/SaveProductID", contentType: "application/json; charset=utf-8", dataType: "json", data: "{ 'id': '" + id + "' }", success: function (data) { }, error: function (err) { alert(err.responseText); } }); window.parent.$('#tabs').tabs('close', tabTitle); }window.parent.addTab(tabTitle, url, icon);
其中window.parent.$('#tabs').tabs('close',tabTitle);方法为关闭页面(iframe)。但是关闭页面后编辑商品页面刷新,相当于重新加载。
故先判断在iframe中打开的tabs中是否有编辑商品页面,如果有,则先关闭,并且把点击编辑商品的商品ID用Session保存,以便于再次点击编辑商品时,把ID赋给隐藏域,在$(function(){})方法中判断ID是否为大于0的值,如果是,则先执行关闭编辑商品页面方法,再执行window.parent.addTab(tabTitle,url,icon)方法。
如果不存在编辑商品页面,则直接跳转到编辑商品页面。
切记:如果tabs页打开为iframe框架,关闭时一定用window.parent.$('#tt').tabs('close','XXX');
Session清除时直接Session["XX"]=null,不能用Session.Abandon()方法,Session.Abandon()方法为把Session全部销毁。