先說一下項目中遇到的問題,在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全部銷毀。