Ng2-smart-table:是否可以显示和隐藏列?

时间:2018-01-28 11:26:40

标签: angular ng2-smart-table

我设计了一张ng2-smart-table的桌子,但我仍然缺少一个重要的功能。

我希望能够隐藏和显示列。

你知道这对ng2-smart-table有用吗?

我还没有在其他地方找到解决方案。

4 个答案:

答案 0 :(得分:2)

我已经通过这种方式从Settings对象中删除了属性:

//My settings
settings = {
    // Columns Specifications
    columns: {
        id: {
            title: 'Id',
            editable: 'false'
        },
        job: {
            title: 'Job Name',
            editable: 'false'
        },
        status: {
            title: 'Status',
            editable: 'false'
        },
        trigger: {
            title: 'Trigger',
            editable: 'false'
        }
    }
};

hideColumnForUser(){
    if(!this.isAdmin){
        delete this.settings.columns.job;
        delete this.settings.columns.trigger;
    }
}

我在ngOnInit()

中调用了hideColumnForUser()方法

答案 1 :(得分:2)

我已经解决了这个问题:

我将属性“show”:true设置为像这样的设置

"columns": {
      "id": {
        "title": "id",
        "show": false
      },

我添加了这段代码

if (this.settings.columns["id"].hasOwnProperty("show")) {
            if (this.settings.columns["id"].show ==false) {
              delete this.settings.columns["id"];
            }
}

我不知道是否还有其他一些方法,但它可以在我这边工作。

答案 2 :(得分:1)

<!-- Übersicht Report-Daten -->

<div class="animated fadeIn">

  <!-- Tabellenstruktur für die Report-Daten -->

  <div class="row">

     <!-- Istwerte für das Monatsreporting -->

     <div class="col-md-12">
       <div class="card" id="cardbg-second">
        <div class="card-header" data-background-color="blue">
          <h4 class="title-second">ISTWERTE FÜR DAS MONATSREPORTING 2017</h4>
        </div>
        <div class="card-content table-responsive" id="body-second">
          <table class="table">
            <ng2-smart-table
              [settings]="settings"
              [source]="data"
              (editConfirm)="onSaveConfirm($event)"
              (deleteConfirm)="onDeleteConfirm($event)">
            </ng2-smart-table>
          </table>
        </div>
       </div>
     </div>
  </div>
</div>

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

import { Ng2SmartTableModule } from 'ng2-smart-table';

@Component({
  selector: 'reportdaten',
  templateUrl: 'reportdaten.component.html',
  styleUrls: ['./reportdaten.component.scss']
})

export class ReportDatenComponent implements OnInit {

  // Daten

  data = [
    {
      bez: 'Krankentage',
      jan: '105,0',
      feb: '120,0',
      mrz: '10,0',
      apr: '188,0',
      mai: '34,5',
      jun: '76,5',
      jul: '90,0',
      aug: '12,0',
      sep: '9,12',
      okt: '60,0',
      nov: '40,0',
      dez: '0,0',
    },
    {
      bez: 'Anzahl LE inkl Leiharbeiter',
      jan: '50,1',
      feb: '49,6',
      mrz: '48,6',
      apr: '47,1',
      mai: '22,7',
      jun: '23,0',
      jul: '87,0',
      aug: '45,0',
      sep: '32,0',
      okt: '40,0',
      nov: '21,4',
      dez: '20,2',
    },
    {
      bez: 'Gesamte Anwesenheitstage',
      jan: '2.000,0',
      feb: '4.783,0',
      mrz: '10,0',
      apr: '212,0',
      mai: '4.344,0',
      jun: '1.200,0',
      jul: '800,0',
      aug: '2.300,0',
      sep: '1.881,0',
      okt: '2.089,0',
      nov: '2.109,0',
      dez: '2.028,0',
    },
    {
      bez: 'Sollstunden GE',
      jan: '299,4',
      feb: '345,98',
      mrz: '200,0',
      apr: '329,2',
      mai: '671,5',
      jun: '400,0',
      jul: '230,8',
      aug: '700,0',
      sep: '120,0',
      okt: '280,9',
      nov: '140,0',
      dez: '40,4',
    },
  ];

  // Einstellungen

  settings = {

    // Meldung wenn keine Daten gefunden wurden oder tbody leer ist

    noDataMessage: 'Es wurden keine Daten gefunden',

    // Aktionen

    actions: {
      columnTitle: 'Aktionen',
    },

    // Seitenzahl

    pager: {
      display: true,
      perPage: 10,
    },

    // CRUD

    add: {
      addButtonContent: '<i class="fa fa-plus" title="hinzufügen"></i>',
      createButtonContent: '<i class="fa fa-check" title="erstellen"></i>',
      cancelButtonContent: '<i class="fa fa-close" title="abbrechen"></i>',
    },

    edit: {
      editButtonContent: '<i class="fa fa-pencil" title="bearbeiten"></i>',
      saveButtonContent: '<i class="fa fa-floppy-o" title="speichern"></i>',
      cancelButtonContent: '<i class="fa fa-close" title="abbrechen"></i>',
      confirmSave: true,
    },

    delete: {
      deleteButtonContent: '<i class="fa fa-trash-o"></i>',
      confirmDelete: true,
    },

    // Filter

    filter: {
      inputClass: 'filter-smart-table'
    },

    // Spalten

    columns: {
      bez: {
        title: 'Bez',
        filter: {
          type: 'default',
          config: {
            default: {
              data: this.data,
              searchFields: 'bez',
              titleField: 'bez',
            },
          },
        },
      },
      jan: {
        title: 'Jan',
        filter: false,
      },
      feb: {
        title: 'Feb',
        filter: false,
      },
      mrz: {
        title: 'Mrz',
        filter: false,
      },
      apr: {
        title: 'Apr',
        filter: false,
      },
      mai: {
        title: 'Mai',
        filter: false,
      },
      jun: {
        title: 'Jun',
        filter: false,
      },
      jul: {
        title: 'Jul',
        filter: false,
      },
      aug: {
        title: 'Aug',
        filter: false,
      },
      sep: {
        title: 'Sep',
        filter: false,
      },
      okt: {
        title: 'Okt',
        filter: false,
      },
      nov: {
        title: 'Nov',
        filter: false,
      },
      dez: {
        title: 'Dez',
        filter: false,
      },
    },
  };

  // Bestägung für speichern eines Datensatzes

  onSaveConfirm(event): void {
    if (window.confirm('Soll dieser Datensatz gespeichert werden?')) {
      event.newData['name'] += ' + added in code';
      event.confirm.resolve(event.newData);
    } else {
      event.confirm.reject();
    }
  }

  // Bestätigung für löschen eines Datensatzes

  onDeleteConfirm(event): void {
    if (window.confirm('Soll dieser Datensatz gelöscht werden?')) {
      event.confirm.resolve();
    } else {
      event.confirm.reject();
    }
  }

  constructor() { }

  ngOnInit() {
  }
}

答案 3 :(得分:0)

settings = {

// Meldung wenn keine Daten gefunden wurden oder tbody leer ist

noDataMessage: 'Es wurden keine Daten gefunden',

// Aktionen

动作:false,

filter:false,

// Seitenzahl

pager: {
  display: true,
  perPage: 10,
},

// CRUD

add: {
  addButtonContent: '<i class="fa fa-plus" title="hinzufügen"></i>',
  createButtonContent: '<i class="fa fa-check" title="erstellen"></i>',
  cancelButtonContent: '<i class="fa fa-close" title="abbrechen"></i>',
},

edit: {
  editButtonContent: '<i class="fa fa-pencil" title="bearbeiten"></i>',
  saveButtonContent: '<i class="fa fa-floppy-o" title="speichern"></i>',
  cancelButtonContent: '<i class="fa fa-close" title="abbrechen"></i>',
  confirmSave: true,
},

delete: {
  deleteButtonContent: '<i class="fa fa-trash-o"></i>',
  confirmDelete: true,
},