In this blog post we can see how to create multiple Tab Pages in a single web part in SharePoint 2013 with jQuery Easy Tabs Plugin .In SharePoint 2007 or SharePoint 2010 we would have used “easy tabs script” to combine multiple web parts into a single tab control. But this jQuery Easy Tabs Web Part enables you to create multiple tab pages in a Single SharePoint 2013 WebPart
What’s there inside the Web Part?
jQuery and Plugins
This web part requires jQuery and Easy Tabs jQuery plugin .It can be downloaded from http://jquery.com and http://os.alfajango.com/easytabs/ .
Assets Module
This module provisions the scripts and css files to a folder named as “Tabs” inside “Style Library”. If you would like to provision to a different asset lib change the URL attribute of module to a different path.
 <?xml version="1.0" encoding="utf-8"?>
 <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   <Module Name="Assets" Url="Style Library/Tabs">
     <File Path="Assetstabs.css" Url="tabs.css" Type="GhostableInLibrary" />
     <File Path="Assetsjquery.ba-hashchange.min.js" Url="jquery.ba-hashchange.min.js" Type="GhostableInLibrary" />
     <File Path="Assetsjquery.easytabs.min.js" Url="jquery.easytabs.min.js" Type="GhostableInLibrary" />
     <File Path="Assetsjquery-1.7.1.min.js" Url="jquery-1.7.1.min.js" Type="GhostableInLibrary" />
   </Module>
 </Elements>Visual WebPart
I have added a Visual WebPart named as “TapPages”, which creates the user interface for Tab pages WebPart and binds the Scripts and css to the web part by invoking a helper method.
UI Part
 <asp:Literal ID="ltScripts" runat="server"></asp:Literal>
 <div id="tab-container" class='tab-container'>
     <ul class='etabs'>
         <li class='tab'><a href="#t1">Tips</a></li>
         <li class='tab'><a href="#t2">Tutorials</a></li>
         <li class='tab'><a href="#t3">Articles</a></li>
     </ul>
     <div class='panel-container'>
         <div id="t1">
             <h2>Heading for Tips</h2>
             <p>
                 Here goes the content for Tips
                         Place your Asp.Net or User Controls here....
             </p>
         </div>
         <div id="t2">
             <h2>Article on Tab Pages</h2>
             <p>
                 This articles shows you how to create a SharePoint 2013 Tab Pages WebPart
             </p>
         </div>
         <div id="t3">
             <h2>Heading for Articles</h2>
             <p>
                 Here goes the content for Articles
             </p>
         </div>
     </div>
 </div>
 <script type="text/javascript" charset="utf-8">
     $(document).ready(function () {
         $('#tab-container').easytabs();
     });
 </script>Code Part
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!this.Page.IsPostBack)
         ltScripts.Text = BindAssets();
 }
 
 private string BindAssets()
 {
     StringBuilder sb = new StringBuilder();
     sb.AppendLine(ManageAssets.BindScript("Style Library/Tabs/jquery-1.7.1.min.js", true));
     sb.AppendLine(ManageAssets.BindScript("Style Library/Tabs/jquery.ba-hashchange.min.js", true));
     sb.AppendLine(ManageAssets.BindScript("Style Library/Tabs/jquery.easytabs.min.js", true));
     sb.AppendLine(ManageAssets.BindStyle("Style Library/Tabs/tabs.css", true));
     return sb.ToString();
 }Helper Class
This class creates the html mark up to attach the scripts and css to the web part
 public class ManageAssets
 {
 
    public static string BindScript(string ScriptFileUrl, bool FromRootSite)
    {
        if (FromRootSite)
            ScriptFileUrl = SPUrlUtility.CombineUrl(SPContext.Current.Site.RootWeb.Url, ScriptFileUrl);
        else
            ScriptFileUrl = SPUrlUtility.CombineUrl(SPContext.Current.Web.Url, ScriptFileUrl);
 
        return string.Format(@"<script type=""text/javascript"" src=""{0}""></script>", ScriptFileUrl);
    }
 
    public static string BindStyle(string StyleFileUrl, bool FromRootSite)
    {
        if (FromRootSite)
            StyleFileUrl = SPUrlUtility.CombineUrl(SPContext.Current.Site.RootWeb.Url, StyleFileUrl);
        else
            StyleFileUrl = SPUrlUtility.CombineUrl(SPContext.Current.Web.Url, StyleFileUrl);
 
        return string.Format(@"<link rel=""stylesheet"" href=""{0}"" type=""text/css"" />", StyleFileUrl);
    }
 }

 
  
 
Leave a comment