ngx-ourpalm-table
TypeScript icon, indicating that this package has built-in type declarations

2.1.10 • Public • Published

ngx-ourpalm-table

基于angular5.x、bootstrap的表格控件,支持编程式和声明式列配置

Installation

npm install ngx-ourpalm-table --save

Demo(声明式配置) plnkr

<ourpalm-table [table]="table">
    <ourpalm-table-column [column]="{header: '全选', field: 'checkAll', checkbox: true}"></ourpalm-table-column>
    <ourpalm-table-column [column]="{header: '序号', field: 'number', rownumbers: true}"></ourpalm-table-column>
    <ourpalm-table-column [column]="{header: '姓名', field: 'name'}">
        <ng-template let-data="$row">
            {{data.name}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: '年龄', field: 'age'}">
        <ng-template let-row="$row">
            {{row.age}}
        </ng-template>
    </ourpalm-table-column>
</ourpalm-table>
export class AppComponent {
 
    table: OurpalmTable;
 
    constructor() {
        this.table = new OurpalmTable({
            loadData: (table: OurpalmTable, callback: (page: Page) => {}) => {
                var start = (table.currentPage - 1) * table.pageSize + 1;
                var end = start + table.pageSize;
                end = end > 86 ? 86 : end;
                //构造服务器假数据
                var rows = [];
                for (; start < end; start++) {
                    rows.push({
                        name: `zhangsan${start}`,
                        age: start,
                        email: `zhangsan${start}@163.com`
                    });
                }
 
                setTimeout(function () {
                    callback({
                        total: 86,
                        rows: rows
                    });
                }, 300);
            }
        });
    }
}

Demo(编程式配置) plnkr

<ourpalm-table [table]="table"></ourpalm-table>
export class AppComponent {
 
    table: OurpalmTable;
 
    constructor() {
        this.table = new OurpalmTable({
            columns: [{
                header: '全选',
                checkbox: true
            }, {
                header: '序号',
                rownumbers: true
            }, {
                header: '姓名',
                field: 'name'
            }, {
                header: '年龄',
                field: 'age'
            }],
            loadData: (table: OurpalmTable, callback: (page: Page) => {}) => {
                var start = (table.currentPage - 1) * table.pageSize + 1;
                var end = start + table.pageSize;
                end = end > 86 ? 86 : end;
                //构造服务器假数据
                var rows = [];
                for (; start < end; start++) {
                    rows.push({
                        name: `zhangsan${start}`,
                        age: start,
                        email: `zhangsan${start}@163.com`
                    });
                }
 
                setTimeout(function () {
                    callback({
                        total: 86,
                        rows: rows
                    });
                }, 300);
            }
        });
    }
}

Demo(Card View)

<ourpalm-table [table]="table">
    <ourpalm-table-column
            [column]="{header: 'Select', field: 'checkAll', checkbox: true}"></ourpalm-table-column>
    <ourpalm-table-column
            [column]="{header: 'Number', field: 'number', rownumbers: true}"></ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'ID', field: 'ID'}">
        <ng-template let-row="$row">
            {{row.ID}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Price', field: 'Price', sort: true}">
        <ng-template let-row="$row">
            {{row.Price}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Cost', field: 'Cost'}">
        <ng-template let-row="$row">
            {{row.Cost}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Url', field: 'Url'}">
        <ng-template let-row="$row">
            {{row.Url}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Other', field: 'Other'}">
        <ng-template let-row="$row">
            {{row.Other}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-rowview>
        <ng-template let-row="$row" let-index="$index">
            <div>
                <div style="display:inline-block;float:left;"><img [src]="row.Url"></div>
                <div style="text-align:left;padding-left:10px;display:inline-block;overflow:auto;">
                    <p>ID:{{row.ID}}</p>
                    <p>Price:{{row.Price}}</p>
                    <p>Cost:{{row.Cost}}</p>
                    <p style="overflow:auto">Other:{{row.Other}}</p>
                </div>
            </div>
        </ng-template>
    </ourpalm-table-rowview>
</ourpalm-table>
export class CardViewComponent {
 
    table: OurpalmTable;
 
    constructor(private http: Http) {
        this.table = new OurpalmTable({
            rowViewShowType: 'both',
            loadData: (table: OurpalmTable, callback: (page: Page) => {}) => {
                this.http
                    .get('http://rapapi.org/mockjsdata/3828/ngx-ourpalm-table/cardview.do')
                    .map((response) => response.json())
                    .subscribe((result) => {
                        console.log(result);
                        callback({
                            total: result.data.length,
                            rows: result.data
                        });
                    });
            }
        });
    }
}

表属性

属性名 属性值类型 默认值 描述
tableClass string table table-bordered table-striped table-hover text-center 自定义表格的class
autoLoadData boolean true 初始化表格的时候是否自动加载第一页
pagination boolean true 是否显示分页控件
singleSelect boolean false 是否限制只能选中一行
serverSort boolean true 是否要服务器排序
multiSort boolean true 是否允许多列排序
pageList array [10,20,30,40,50] 在设置分页属性的时候 初始化页面大小选择列表
pageSize int 10 在设置分页属性的时候初始化页面大小
skipPage boolean true 在设置分页属性的时候是否允许用户跳转页面
cacheKey string '' 客户端存储table信息是对应存放在localStorage中的key
cachePageSize boolean false 是否在客户端存储table的页大小,刷新的时候页大小不变,保存在localStorage中,key为${cacheKey}-pageSize
cacheColumns boolean false 是否在客户端存在table的列隐藏信息,刷新的时候列的隐藏信息不变,保存在localStorage中,key为${cacheKey}-columns
pagePosition string bottom 分页条在那里显示可取值 'bottom', 'top', 'both'
showRefreshBtn boolean true 是否显示刷新按钮
showSettingBtn boolean true 是否显示设置按钮
checkOnSelect boolean true 选择CheckBox时级联选中当前行
selectOnCheck boolean true 选择当前行时级联选中checkbox
ctrlSelect boolean false 多选时需要按住ctrl键
rowMenus any[] null 右键上下文菜单
rowView RowView null 自定义row显示
rowViewShowType 'rowView' | 'column' | 'both' rowView 自定义行渲染模式

列属性

属性名 属性值类型 默认值 描述
header string '' 表头
field string '' 字段名称
sort boolean false 是否列排序
sortOrder string null 列排序方向,取值 asc 或 desc 或 null
rownumbers boolean false 是否为行号列 1...*
show boolean true 是否隐藏列
checkbox boolean false 是否为多选列
sorter function undefined 服务器排序不需要设置,客户端排序需要设置,sorter: (column, row1, row2) => row1[column.field] - row2[column.field]
styler ()=>any | any '' 设置表格cell的样式,styler: (rowIndex, columnIndex, rowData) => return { color: 'red' } or styler: { color: 'red' }
clazz string '' 设置表格cell的class
disabledContextMenu boolean false 是否在当前列上禁用上下文菜单

右键菜单属性

属性名 属性值类型 默认值 描述
text string '' 菜单名字
iconCls string '' 菜单icon
separator boolean false 分割线
show boolean | ()=>boolean true 是否显示
onclick function false 点击时触发
submenus any[] null 子菜单

方法

方法名 参数 描述
getDisplayedColumns 获取显示的列信息
getDisplayedRows 获取显示的行信息
getSelectedRows 获取选中的行信息
getCheck edRows 获取勾选中的行信息
getSortColumns 获取排序的列信息
changeColumns columns[] 动态修改表的列定义,只支持编程方式,不支持声明式方式
chagePageSize pageSize 动态修改表的分页大小
firstPage 跳转到第一页
prePage 跳转到上一页
nextPage 跳转到下一页
lastPage 跳转到最后一页
refresh 刷新当前页
gotoSkipPage page:number 跳转页 1...最大页
setOptions options:OurpalmTable 修改表配置项,修改后将触发加载数据
setPageData pageData: Page 设置当页数据
checkAll 勾选当前页中的所有行
uncheckAll 取消勾选当前页中的所有行
checkRow index 勾选一行,行索引从0开始,传入行索引
uncheckRow index 取消勾选一行,行索引从0开始,传入行索引
openSetting 打开设置列面板

事件

事件名 参数 描述
onClickRow rowIndex, rowData 在用户点击一行的时候触发,参数包括:rowIndex:点击的行的索引值,该索引值从0开始。rowData:对应于点击行的记录。
onDblClickRow rowIndex, rowData 在用户双击一行的时候触发,参数包括:rowIndex:点击的行的索引值,该索引值从0开始。rowData:对应于点击行的记录。
onClickCell rowIndex, cellIndex, rowData, column 在用户点击一个单元格的时候触发。
onDblClickCell rowIndex, cellIndex, rowData, column 在用户双击一个单元格的时候触发。
onHeaderCheckBoxChange 选择header中多选框时触发
onRowCheckBoxChange rowData, rowIndex 用户选中表格行时触发
trackByFun rowIndex, rowData ngFor tr trackBy

全局配置

@NgModule({
    imports: [
        OurpalmTableModule.forRoot()
    ]
})
export class AppModule {
 
    constructor(private tableConfig: TableConfig) {
        this.tableConfig.config = {
            pageSize: 50,
            pageList: [50, 100, 200]
        }
    }
}

创建table

@Component({
    selector: 'dynamic-table',
    template: `
        <button (click)="log()">click event test</button>
        <button (click)="changeTable1()">table01</button>
        <button (click)="changeTable2()">table02</button>
        <ourpalm-table [table]="table"></ourpalm-table>
    `
})
export class DynamicTableComponent {
 
    table: OurpalmTable;
 
    constructor(private tableConfig: TableConfig) {
 
        //不继承全局配置
        this.table = new Table({
            cacheKey: 'table01',
            cachePageSize: true,
            cacheColumns: true,
            loadData: () => {
            }
        });
 
        //继承全局配置
        this.table = this.tableConfig.create({
            cacheKey: 'table01',
            cachePageSize: true,
            cacheColumns: true,
            pagePosition: 'both',
            loadData: () => {
            }
        });
 
    }
}

Package Sidebar

Install

npm i ngx-ourpalm-table

Weekly Downloads

80

Version

2.1.10

License

MIT

Unpacked Size

8.2 MB

Total Files

38

Last publish

Collaborators

  • lxc91
  • lori.wang
  • doublinglee
  • wangkaile
  • liangshen~