65.9K
CodeProject 正在变化。 阅读更多。
Home

在 SharePoint 2013 中集成 Bootstrap 框架

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (4投票s)

2016年7月4日

CPOL

2分钟阅读

viewsIcon

51788

downloadIcon

1134

本文介绍了如何将 Bootstrap 框架与 SharePoint 集成,以及如何使用 Bootstrap 框架和 XSL 自定义任务列表。

引言

本文教你如何将 Bootstrap 框架与 SharePoint 集成,以及如何使用 Bootstrap 框架改善任务列表视图的外观和感觉。该列表将包含以下功能:

  1. 搜索
  2. 排序
  3. 分页
  4. 将任务项导出到 Excel、CSV 和 PDF
  5. 从视图中复制选定的任务项到剪贴板
  6. 打印任务项

 

背景

我们将要在 SharePoint 2013 站点中集成 Bootstrap 框架,以改善站点外观和感觉,并且该站点将支持 RWD 设备。

以下是集成 Bootstrap 框架并自定义 SharePoint 2013 站点中任务列表外观和感觉的步骤:

  1. 下载 Bootstrap 框架
  2. 将所需文件上传到样式库
  3. 在母版页中添加 JS 和 CSS 引用
  4. 创建一个 XSL 文件以修改任务列表视图
  5. 将自定义 XSL 文件应用于任务列表视图 Web 部件

下载 Bootstarp 框架

  1. 打开链接 https://bootstrap.ac.cn/getting-started/#download
  2. 点击“Download bootstrap”按钮
  3. 下载完成后,将文件解压到您的本地文件夹中

将文件上传到样式库

  1. 通过单击 站点设置-> 站点内容-> 样式库 导航到样式库
  2. 创建如下所示的文件夹结构
  3. 创建完成后,单击 CSS 文件夹并上传以下文件
  4. 以下 JS 文件将上传到 JS 文件夹中
  5. 将字体文件上传到样式库中的 fonts 文件夹
  6. 将 task.xsl 文件上传到 xsl 文件夹

在母版页中添加 JS 和 CSS 引用

Web 设计器库 组中打开母版页 (设置->站点设置->母版页和页面布局)

<!--SPM:<SharePoint:CssRegistration Name="Themable/corev15.css" runat="server"/>--> 行之后添加以下链接:

        <!--SPM:<SharePoint:CssRegistration Name="&#60;%$SPUrl:~SiteCollection/Style Library/AH/CSS/bootstrap.css%&#62;" after="core15.css" runat="server"/>-->
        <!--SPM:<SharePoint:CssRegistration Name="&#60;%$SPUrl:~SiteCollection/Style Library/AH/CSS/font-awesome.css%&#62;" after="core15.css" runat="server"/>-->
        <!--SPM:<SharePoint:CssRegistration Name="&#60;%$SPUrl:~SiteCollection/Style Library/AH/CSS/dataTables.bootstrap.css%&#62;" after="core15.css" runat="server"/>-->
        <!--SPM:<SharePoint:CssRegistration Name="&#60;%$SPUrl:~SiteCollection/Style Library/AH/CSS/responsive.dataTables.css%&#62;" after="core15.css" runat="server"/>-->
        <!--SPM:<SharePoint:CssRegistration Name="&#60;%$SPUrl:~SiteCollection/Style Library/AH/CSS/buttons.dataTables.min.css%&#62;" after="core15.css" runat="server"/>-->
        <!--SPM:<SharePoint:CssRegistration Name="&#60;%$SPUrl:~SiteCollection/Style Library/AH/CSS/sb-admin-2.css%&#62;" after="core15.css" runat="server"/>-->
               

在 body 部分的末尾,添加以下 js 链接。 我们在 body 部分的末尾添加脚本的原因是脚本将在加载页面后加载。

 <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscroll" Name='~SiteCollection/Style Library/AH/JS/jquery.min.js' runat="server"/>-->
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol2" Name='~SiteCollection/Style Library/AH/JS/jquery.dataTables.js' runat="server"/>-->
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol3" Name='~SiteCollection/Style Library/AH/JS/dataTables.bootstrap.js' runat="server"/>-->       
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol4" Name='~SiteCollection/Style Library/AH/JS/dataTables.buttons.min.js' runat="server"/>-->
       
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol5" Name='~SiteCollection/Style Library/AH/JS/buttons.flash.min.js' runat="server"/>-->
      
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol7" Name='~SiteCollection/Style Library/AH/JS/pdfmake.min6.js' runat="server"/>-->       
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol8" Name='~SiteCollection/Style Library/AH/JS/vfs_fonts7.js' runat="server"/>-->
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol9" Name='~SiteCollection/Style Library/AH/JS/buttons.html5.min5.js' runat="server"/>-->
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol10" Name='~SiteCollection/Style Library/AH/JS/buttons.print.min.js' runat="server"/>-->
        <!--SPM:<SharePoint:ScriptLink ID="ScriptLinkscrol11" Name='~SiteCollection/Style Library/AH/JS/sb-admin-2.js' runat="server"/>-->

创建 Xsl 文件

以下 JavaScript 代码将在 SharePoint 模式弹出窗口中打开 添加任务列表表单

url - 新的任务列表表单 url

title - 弹出框的名称

 dialogReturnValueCallback - 这是一个回调函数,将在关闭弹出窗口后执行。 因此,当我们添加新项目时,将刷新列表视图网格以反映页面上的更改

 

function AddTask()
{
          
            var options = {

                url: "../Lists/tasks/NewForm.aspx",
                title: "Add Task",
                dialogReturnValueCallback: function (dialogResult) {
   if (dialogResult != SP.UI.DialogResult.cancel)
          {
             SP.UI.ModalDialog.RefreshPage(dialogResult)
          }

                },
                allowMaximize: false
            };
            SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
              
        }

提及您要在报表中添加的列的内部名称:

<xsl:value-of select="@项目_x0020_名称" disable-output-escaping="yes"></xsl:value-of>

下面的 excel 文件代码

<xsl:stylesheet version="1.0"

              xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

              xmlns:msxsl="urn:schemas-microsoft-com:xslt"

              exclude-result-prefixes="msxsl" xmlns:ddwrt2="urn:frontpage:internal">


  <xsl:output method='html' indent='yes'/>
  <xsl:template match='dsQueryResponse'>
<div  style="width:98%;padding-left:10px">

 <div id="page-wrapper">
     
            <div class="row">
                <div class="col-lg-12">
                    <div class="panel panel-primary">
                        <div class="panel-heading">
                      
     All Open Task
     
     
                        </div>
                        <!-- /.panel-heading -->
                        <div class="panel-body">
                       

                            <div class="dataTable_wrapper">
                                <table class="table table-striped table-bordered table-hover " id="Task-table">
                                    <thead>
                                    <tr>
                                    <td colspan="9" style="text-align:left">
                                    <input type="button" class="btn btn-primary" >
      <xsl:attribute name="value">
      Add New Task
      </xsl:attribute>
      <xsl:attribute name="onclick">
       AddTask()
      </xsl:attribute>
      </input>

                                    </td>
                                    </tr>
                                        <tr style="color: White;background-color: #00B3E3;font-weight: bold;">
                                            <th>ID</th>
                                            <th>Project Name</th>
                                            <th>Task Name</th>
                                            <th>Due Date</th>
                                            <th>Assigned To</th>
                                            <th>Comments</th>
                                             <th>% of Complete</th>
                                           

<th></th>
                                        </tr>
                                    </thead>
                                     <tbody>
                                          <xsl:apply-templates select='Rows/Row'/>
                                    
                                  </tbody>
                                  
                                </table>
                            </div>
                          
                        </div>
                        <!-- /.panel-body -->
                    </div>
                    <!-- /.panel -->
                </div>
                <!-- /.col-lg-12 -->
            </div>
            </div>
       
  

</div>

  <xsl:text disable-output-escaping="yes">
&lt;script&gt;

 function AddTask()
 {
           
            var options = {

                url: "../Lists/tasks/NewForm.aspx",
                title: "Add Task",
                dialogReturnValueCallback: function (dialogResult) {
   if (dialogResult != SP.UI.DialogResult.cancel)
          {
             SP.UI.ModalDialog.RefreshPage(dialogResult)
          }

                },
                allowMaximize: false
            };
            SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
               
        }
       
        function EditTask(Parameter)
 {
           
            var options = {

                url: "../Lists/tasks/EditForm.aspx?ID="+Parameter,
                title: "Add Task",
                dialogReturnValueCallback: function (dialogResult) {
   if (dialogResult != SP.UI.DialogResult.cancel)
          {
             SP.UI.ModalDialog.RefreshPage(dialogResult)
          }

                },
                allowMaximize: false
            };
            SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
               
        }
        $(document).ready(function () {
            $('#Task-table').DataTable({
                responsive: true,
                dom: 'Bfrtip',
        buttons: [{
                extend: 'copy',
                title: 'All Open Task',
                exportOptions: {
                   columns: '0,1,2,3,4,5,6:visible'
                  
                }},
                {
                extend: 'csv',
                title: 'All Open Task',
                exportOptions: {
                   columns: '0,1,2,3,4,5,6:visible'
                }},
                 {
                extend: 'excel',
                title: 'All Open Task',
                exportOptions: {
                   columns: '0,1,2,3,4,5,6:visible'
                }},
                 {
                extend: 'pdf',
                title: 'All Open Task',
                exportOptions: {
                   columns: '0,1,2,3,4,5,6:visible'
                }},
                   {
                extend: 'print',
                title: 'All Open Task',
                exportOptions: {
                   columns: '0,1,2,3,4,5,6:visible'
                }}


               
               
                ]

          
       
            });
        });
  

        &lt;/script&gt;

</xsl:text>
  </xsl:template>


  <xsl:template match='Row'>

    <tr>

      <td >
        <xsl:value-of select="@ID"></xsl:value-of>
      </td>  

      <td>
         <xsl:value-of select="@Project_x0020_Name" disable-output-escaping="yes"></xsl:value-of>
      </td>
   <td>
         <xsl:value-of select="@Title"></xsl:value-of>
      </td>
        <td>
         <xsl:value-of select="@DueDate"></xsl:value-of>
      </td> 
<td>
         <xsl:value-of select="@AssignedTo" disable-output-escaping="yes"></xsl:value-of>
      </td>
      <td>
         <xsl:value-of select="@Body" disable-output-escaping="yes"></xsl:value-of>
      </td>
       <td>
         <xsl:value-of select="@PercentComplete" disable-output-escaping="yes"></xsl:value-of>
      </td>
      

     
<td>

<input type="button" class="btn btn-primary" >
      <xsl:attribute name="value">
      Edit
      </xsl:attribute>
      <xsl:attribute name="onclick">
       EditTask('<xsl:value-of select="@ID"></xsl:value-of>')
      </xsl:attribute>
      </input>

</td>

    </tr>

  </xsl:template>

</xsl:stylesheet>

所有 JavaScript 代码都应写在下面的标签内

  <xsl:text disable-output-escaping="yes">
&lt;script&

//javascript code write here
     &lt;/script&gt;

</xsl:text>

将 xsl 文件应用于列表视图 web 部件

  1. 在页面中添加列表视图 web 部件
  2. 编辑 web 部件属性
  3. 在 web 部件属性的“杂项”部分中提供 XSL 文件的路径,在 XSL 链接中提供路径

历史

创建初始版本

7 月 29 日 - 删除了母版页中不必要的代码

© . All rights reserved.