zoukankan      html  css  js  c++  java
  • ag-grid 学习

    项目要将 angular 从 1.5升级到 5,ui-grid 在 5 中并不支持,所以为了替换 ui-grid ,来学习了 ag-grid 。

    简单来说,2 者相差并不大,使用方式也大致雷同,这里用 js 直观的记录一下:

    <html>
    <head>
        <!-- reference the ag-Grid library-->
        <!--<script src="https://cdnjs.cloudflare.com/ajax/libs/ag-grid/10.1.0/ag-grid.js"></script>-->
        <script src="ag-grid.js"></script>
        <style>
            .orange {
                color: orange;
            }
        </style>
    </head>
    <body>
        <h1>Simple ag-Grid Example</h1>
    
        <!-- the div ag-Grid will use to render it's data -->
        <div id="myGrid" style="height: 200px;700px" class="ag-fresh"></div>
        
        <p>        
            <button type='button' onclick="deselectAllFnc()">clear selection</button>
            <button type='button' onclick="selectAllFnc()">select all</button>
        </p>
        <script>
            // row data ,行内数据
            var rowData = [
                {name: "Toyota", model: "Celica", price: 35000,operation: 'a', folder: true, children: [{name:'3x', model:'sss', price:37000}]},
                {name: "Ford", model: "Mondeo", price: 32000,folder: true, open: true, children: [{name:'test', model:'test', price:100}]},
                {name: "Porsche", model: "Boxter", price: 72000}
            ]
            // column definitions,表格列属性
            var columnDefs = [
                {
                    headerName: 'Name',
                    field: 'name',
                     200,
                    enableRowGroup: true,
                    checkboxSelection: function (params) {
                        // we put checkbox on the name if we are not doing grouping
                        return params.columnApi.getRowGroupColumns().length === 0;
                    },
                    headerCheckboxSelection: function (params) {
                        // we put checkbox on the name if we are not doing grouping
                        return params.columnApi.getRowGroupColumns().length === 0;
                    },
                    headerCheckboxSelectionFilteredOnly: true,
                    cellRenderer: 'group',
                    cellRendererParams: {
                        innerRenderer: function (params) { return params.data.name; },
                        suppressCount: true
                    }
                },
                {headerName: "Model", field: "model"},
                {headerName: "Price", field: "price"},        
                {headerName: "Operation", field: "operation", cellRenderer: function(params) { return '<button onclick="btnClick(1);">click1</button> <button onclick="btnClick(2);">click2</button>'}}    
            ]
            // Grid Definition 
            // let the grid know which columns and what data to use
            // 表格初始化配置
            var gridOptions = {
                // PROPERTIES - object properties, myRowData and myColDefs are created somewhere in your application
                //列标题设置
                columnDefs: columnDefs,        
                //行内数据插入
                rowData: rowData,    
                animateRows: true,
                
                // PROPERTIES - simple boolean / string / number properties    
                //是否支持列宽调整
                enableColResize: true,
                //行高设置
                rowHeight: 26,
                //单行选中,"multiple" 多选(ctrl),"single" 单选
                rowSelection: 'multiple',
                // enable sorting ,是否支持排序
                enableSorting: true,
                // enable filtering ,是否可以筛选
                enableFilter: true,
                //默认筛选字段
                //quickFilterText: 's',
                //选中组可选中组下子节点
                //groupSelectsChildren: true,
                //true的话,点击行内不会进行行选择
                suppressRowClickSelection: true,
                //阻止列拖拽移动
                //suppressMovableColumns: true,
                //阻止列拖拽出表格,列移除
                suppressDragLeaveHidesColumns: true,
                //给整行加样式,
                getRowClass: function(params) { return (params.data.name === 'Ford') ? "orange" : null; },
                
                // EVENTS - add event callback handlers
                onModelUpdated: function(event) { console.log('model updated'); },
                //行内点击触发事件
                onRowClicked: function(event) { 
                    //event.data 选中的行内数据,event.event 为鼠标事件,等其他。可以log自己看一下
                    console.log('a row was clicked', event); 
                },
                //列宽度改变触发
                onColumnResized: function(event) { console.log('a column was resized'); },
                //表格加载完成触发
                onGridReady: function(event) { console.log('the grid is now ready'); },
                //单元格点击触发
                onCellClicked: function(event) { console.log('a cell was cilcked'); },
                //单元格双击触发
                onCellDoubleClicked: function(event) { console.log('a cell was dbcilcked'); },
                
                onCellContextMenu: function(event) { },
                onCellValueChanged: function(event) { },
                onCellFocused: function(event) { },
                onRowSelected: function(event) { },
                onSelectionChanged: function(event) { },
                onBeforeFilterChanged: function(event) { },
                onAfterFilterChanged: function(event) { },
                onFilterModified: function(event) { },
                onBeforeSortChanged: function(event) { },
                onAfterSortChanged: function(event) { },
                onVirtualRowRemoved: function(event) { },
                
                // CALLBACKS
                isScrollLag: function() { return false; },
                
                
                getNodeChildDetails: function(file) {
                    if (file.folder) {
                        return {
                            group: true,
                            children: file.children,
                            expanded: file.open
                        };
                    } else {
                        return null;
                    }
                }            
            }
            
            //取消选中状态
            function deselectAllFnc() {
                gridOptions.api.deselectAll();
            }
            //全选
            function selectAllFnc() {
                gridOptions.api.selectAll();
            }
            
            function btnClick(value) {
                console.log(value);
            }
            
            // wait for the document to be loaded, otherwise,
            // ag-Grid will not find the div in the document.
            document.addEventListener("DOMContentLoaded", function() {
                // lookup the container we want the Grid to use
                var eGridDiv = document.querySelector('#myGrid');
    
                // create the grid passing in the div to use together with the columns & data we want to use
                new agGrid.Grid(eGridDiv, gridOptions);
                
                
                // create handler function,增加监听事件
                function myRowClickedHandler(event) {
                    console.log('the row was clicked');
                }
                // add the handler function
                gridOptions.api.addEventListener('rowClicked', myRowClickedHandler);
            });
        </script>
    </body>
    </html>

    效果图:

  • 相关阅读:
    kubernetes(十九) Ceph存储入门
    Kubernetes 使用 Weave Scope 监控集群(十七)
    在Mac下安装Wordpress
    关闭 Mac 上的虚拟内存
    Underlay、Overlay、大二层介绍
    Docker For Mac 下安装 Rancher
    Minikube-Kubernetes本地环境进行开发
    minikube---kubectl常用命令
    Mac安装minikube
    java内存模型
  • 原文地址:https://www.cnblogs.com/guofan/p/8352407.html
Copyright © 2011-2022 走看看