【问题标题】:Datatables Button Collection - How to Use Correctly数据表按钮集合-如何正确使用
【发布时间】:2022-01-25 03:21:09
【问题描述】:

我正在尝试向我的数据表中添加一个下拉菜单以显示如下按钮:

我的代码:

window.jQuery = window.$ = require("jquery");
    // boostrap
import pdfMake from "pdfmake/build/pdfmake";
import pdfFonts from "pdfmake/build/vfs_fonts";
pdfMake.vfs = pdfFonts.pdfMake.vfs;

var datatableSettings = {
    select: {
      style: "multi",
      selector: "td:first-child",
    },
    dom: "Bfrtip",
    buttons: {
      buttons: [
        {
          extend: "collection",
          text: "Export",
          buttons: [
            { extend: "csv" },
            { extend: "excel" },
            {
              extend: "pdfHtml5",
              orientation: "landscape",
              pageSize: "A0",
              title: "Users List PDF",
              exportOptions: {
                modifier: {
                  page: "current",
...
  },

我的问题是显示了下拉菜单,但它不起作用:当我单击导出以显示里面的按钮时,我无法打开下拉菜单

【问题讨论】:

  • 怎么不工作了?你能提供更多信息吗?
  • 我无法打开下拉菜单以显示里面的按钮
  • 你能创建一个可以复制的sn-p吗?
  • 我不能因为我有很多依赖项,而且这是一个大项目,问题是我没有任何控制台问题,当我点击导出按钮时,我无法显示其他按钮
  • Khaled 您需要创建一个最小的可重现示例。没有它,我们无法猜测您的项目包含什么以及为什么是错误的。首先,您需要了解您的问题是什么,然后将其作为易于理解的信息提供给我们。通常,您强迫自己正确地提出问题这一纯粹事实会引导您找到答案。

标签: javascript jquery webpack datatables


【解决方案1】:

您将需要指定text 属性并且不需要指定extend 属性,除非您希望在集合中有下拉按钮。这对我有用:

          buttons: [
            {
              extend: "collection",
              text: "Export",
              buttons: [
                { text: "csv" },
                { text: "excel" },
                {
                  text: "pdf",
                  orientation: "landscape",
                  pageSize: "A0",
                  title: "Users List PDF",
                  exportOptions: {
                    modifier: {
                      page: "current",
                    },
                  },
                },
              ],

小提琴:https://jsfiddle.net/r2c9s0o7/

【讨论】:

  • 非常感谢您对我的帮助,我真的很感激,只是我会为此发布一个完整的解决方案
  • @KhaledBoussoffara 我很高兴问题得到解决。
  • 非常感谢,你能看看我最后一个问题吗?
  • @KhaledBoussoffara 如果您的活动中有event.stopPropagation(),会发生什么?您已经有一个preventDefault 电话,但这可能还不够。
  • 所有数据表都被重新渲染,表单被重置为空输入值,我现在无法在点击提交时应用过滤器值
【解决方案2】:

这是使收藏下拉菜单工作的完整配置:

我正在使用 symfony webpack:

在js文件中:

import "./styles/datatables.scss";
const $ = require("jquery");
const routes = require("../public/js/fos_js_routes.json");
import Routing from "../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js";
require("@fortawesome/fontawesome-free/css/all.min.css");
require("@fortawesome/fontawesome-free/js/all.js");
Routing.setRoutingData(routes);

// this "modifies" the jquery module: adding behavior to it
// the bootstrap module doesn't export/return anything
require("bootstrap");
require("bootstrap/js/dist/tooltip");
window.jQuery = window.$ = require("jquery");
require("datatables.net");
require("datatables.net-dt");
require("datatables.net-bs5");
require("jszip");
require("pdfmake");
require("datatables.net-buttons-bs5");
require("datatables.net-buttons/js/buttons.colVis.js");
require("datatables.net-buttons/js/buttons.html5.js");
require("datatables.net-buttons/js/buttons.print.js");
require("datatables.net-scroller-bs5");
require("datatables.net-select-bs5");
import pdfMake from "pdfmake/build/pdfmake";
import pdfFonts from "pdfmake/build/vfs_fonts";
pdfMake.vfs = pdfFonts.pdfMake.vfs;
$(document).ready(function () {
  var startupsDt = null;
  var managersDt = null;
  var promosDt = null;
  var domainsDt = null;
  var datatableSettings = {
    select: {
      style: "multi",
      selector: "td:first-child",
    },
    dom: "Bfrtip",
    buttons: {
      buttons: [
        {
          extend: "collection",
          text: "Export",
          buttons: [
            { extend: "csv" },
            { extend: "excel" },
            {
              extend: "pdfHtml5",
              orientation: "landscape",
              pageSize: "A0",
              title: "Users List PDF",
              exportOptions: {
                modifier: {
                  page: "current",
                },
              },
            },
          ],
        },
        /*   {
          extend: "copy",
          className: "btn btn-primary glyphicon glyphicon-duplicate",
        }, */
      ],
      // dom: {
      //   button: {
      //     tag: "button",
      //     className: "btn-primary mx-2 my-2 align-middle btn-sm ",
      //   },
      //   buttonLiner: {
      //     tag: "null",
      //   },
      // },
    },
    responsive: true,
    ordering: false,
    pageLength: 10,
    paginate: true,
    lengthChange: false,
    searching: false,
    processing: true,
    serverSide: true,
    bAutoWidth: false,
    sAjaxDataProp: "data",
    oLanguage: {
      sProcessing:
        '<div class="d-flex justify-content-center py-2"><i class="fa fa-spinner fa-2x" aria-hidden="true"></i></div>\n',
      sSearch: "Rechercher",
      sLengthMenu: "Afficher _MENU_ &eacute;l&eacute;ments",
      sInfo:
        '<div class="alert alert-dark" role="alert"> Affichage des &eacute;lements <span class="badge badge-info"> _START_ </span> &agrave; <span class="badge badge-info"> _END_ </span> sur <span class="badge badge-info"> _TOTAL_ </span> &eacute;l&eacute;ments </div>',
      sInfoEmpty:
        "Affichage des &eacute;lements 0 &agrave; 0 sur 0 &eacute;l&eacute;ments",
      sInfoFiltered: "(filtr&eacute; de _MAX_ &eacute;l&eacute;ments au total)",
      sInfoPostFix: "",
      sLoadingRecords: '<i class="fa fa-spinner" aria-hidden="true"></i>\n',
      sZeroRecords: "Aucun &eacute;l&eacute;ment &agrave; afficher",
      sEmptyTable: "Aucune donnée disponible dans le tableau",
      oPaginate: {
        sFirst: "Premier",
        sPrevious: "Pr&eacute;c&eacute;dent",
        sNext: "Suivant",
        sLast: "Dernier",
      },
      oAria: {
        sSortAscending: ": activer pour trier la colonne par ordre croissant",
        sSortDescending:
          ": activer pour trier la colonne par ordre décroissant",
      },
    },
    columns: null,
    ajax: null,
  };

在 sass 或 css 文件中不要忘记添加:

@import "~bootstrap/scss/bootstrap";
@import "~datatables.net-bs5/css/dataTables.bootstrap5.min.css";
@import "~datatables.net-buttons-bs5/css/buttons.bootstrap5.min.css";

终于找到了:

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2017-01-11
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多