2011-03-09 31 views
1

Folk,Jquery Tab控件 - 重新加載已點擊的所有標籤頁

我正在使用Jquery UI - Tab。

我有一個編輯屏幕,其中主窗體和選項卡已顯示在下面。現在,當我從一條記錄導航到另一條記錄時,Ajax調用將轉到服務器以獲取新的主記錄。

現在我想刷新下面的選項卡,用新的記錄ID,以及所以我所做的就是以下幾點:

var jsonTabMetaData = [{"HtmlName":"Notes","Text":"Notes","Url":"../Notes.rl?moduleName=glbModuleName&moduleRecordID=glbModuleRecordID&sessionID=glbSessionID&company=glbCompanyName","Selected":false,"ModuleName":null,"ModuleRecordID":0},{"HtmlName":"AddressTel","Text":"Address & Telephone","Url":"../PhysicalAddress.rl/QuickAddress?moduleName=glbModuleName&moduleRecordID=glbModuleRecordID&sessionID=glbSessionID&company=glbCompanyName","Selected":false,"ModuleName":null,"ModuleRecordID":0},{"HtmlName":"Sendout","Text":"Send outs","Url":"../Sendouts.rl/List?moduleName=glbModuleName&moduleRecordID=glbModuleRecordID","Selected":false,"ModuleName":null,"ModuleRecordID":0}, 



function fnReboundTabs() { 
    $('#tabs a').each(function (index) { 
     var newUrl = jsonTabMetaData[$(this).attr("data-index")].Url; 
     newUrl = newUrl.replace("glbModuleRecordID", glbModuleRecordID); 
     newUrl = newUrl.replace("glbModuleName", glbModuleName); 
     newUrl = newUrl.replace("glbSessionID", glbSessionID); 
     newUrl = newUrl.replace("glbCompanyName", glbCompanyName); 
     this.href = newUrl; 
    }); 

`

if (firstTimeReboundTabs) { 
     firstTimeReboundTabs = false; 
     $("#tabs").tabs({ 
      select: function (event, ui) { 
      }, 
      cache: true, 
      event: '<%= (UI.Web.Helper.SessionMaster.OpenTabOnMouseOver) ? "mouseover": "click" %>', 
      async: false, 
      ajaxOptions: { 
       cache: false, 
       success: function() { }, 
       error: function (xhr, status, index, anchor) { 
        $(anchor.hash).html(
        "Couldn't load this tab. Should you see this error again, please notify admin."); 
       } 
      } 
     }); 
    } 

`

現在的問題是這樣的:

當我瀏覽時,URL中的值發生變化,但標籤點擊請求是op進入新的屏幕。

I.e.它不能用作Ajax調用。

主屏幕會顯示,並在瀏覽器地址欄中以URL的形式打開URL。

回答

2

如果我正確地執行此操作,則希望在更改recordId時更改選項卡內容的URL,並在不重新加載整個頁面的情況下重新加載該選項卡。

這是可能的使用標籤頁對象的兩個方法:

更改URL,使用.tabs( 「URL」,索引,鏈接)其中:

  • 指數=所述的索引要更新
  • 網址選項卡=新的URL

的字符串要重新加載選項卡的內容在任何時候使用.tabs(「負荷」,指數)

  • index =您正在更新的選項卡的索引。

一起使用這些應該做你想做的。即當你有一個新的recordId做:

mytabs.tabs("url", i, 'mypage?recordId' + newRecordId) 
mytabs.tabs("load", i) 

的文檔是在這裏,在 '方法' 選項卡下:jqueryui docs

0

這是我現在已經完成:

function fnReboundTabs() { 
    for (var idx = 0; idx < jsonTabMetaData.length; idx++) { 

     var newUrl = jsonTabMetaData[idx].Url; 
     newUrl = newUrl.replace("glbModuleRecordID", glbModuleRecordID); 
     newUrl = newUrl.replace("glbModuleName", glbModuleName); 
     newUrl = newUrl.replace("glbSessionID", glbSessionID); 
     newUrl = newUrl.replace("glbCompanyName", glbCompanyName); 
     $("#tabs").tabs("url", idx, newUrl) 
    } 

    if (isNaN($('#tabs').tabs().tabs('option', 'selected'))) 
    { } 
    else { 
     $("#tabs").tabs("load", $('#tabs').tabs().tabs('option', 'selected')) 
    } 
} 

此功能將在主記錄在客戶端下載時調用 - 基於JSON/AJAX。