2011-03-09 114 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。