国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Handsontable 類似 excel 表格編輯器

villainhr / 2138人閱讀

摘要:原文發(fā)布于個人博客歡迎訪問簡介是一個類似表格編輯器,支持豐富的展現(xiàn)和交互,以及多樣的單元格展現(xiàn)和配置核心由原生編寫,通過打包同類項目中,點贊最多,列表官網(wǎng)地址支持的特征的一些主要功能這里只列出主要功能,想了解更多更能,可以查詢官方文檔。這

原文發(fā)布于個人博客>>歡迎訪問

HandsonTable 簡介

Handsontable 是一個類似 excel 表格編輯器,支持豐富的展現(xiàn)和交互,以及多樣的單元格展現(xiàn)和配置

核心由原生 js (es6) 編寫,通過webpack打包

同類 Jspreadsheets 項目中,點贊最多,Jspreadsheets列表

官網(wǎng)地址

HandsonTable 支持的特征

Handsontable 的一些主要功能:

edit

Context menu

Drag-down

Dropdown

Freezing

Merge cells

Comments

Data validation

Custom HTML

sortingtable

這里只列出主要功能,想了解更多更能,可以查詢官方文檔。這里附一張官方demo圖:

如何實現(xiàn)一個handsontable

Handsontable 的核心可以分為配置,事件,方法三個方面:

配置

引入handsontable包,

new 一個 Handsontable 實例

// 新建Hansontable實例
var container = document.getElementById("dataGrid");
var hot = new Handsontable(container, options); // options 如下
// Handsontable 的一些主要配置
var options = {
    data: Array || Object, // data 是整個表格的數(shù)據(jù)源,可以接收一個二維數(shù)組,或者一個對象
    rowHeaders: Boolean || Array || function,
    colHeaders: Boolean || Array || function,
    cells: function,     // row, col, prop
    stretchH: String,  // "all", "none", "last",
    columns: Array || function,
    columnSorting: Boolean || Object,
    manualColumnResize: true,
    renderer: function,
}

然后說一下上面每一個配置項的用法:

data
data 是整個表格的數(shù)據(jù)源,可以接收一個二維數(shù)組,或者一個對象

// 作為數(shù)組
data = [
      ["", "Kia", "Nissan", "Toyota", "Honda", "Mazda", "Ford"],
      ["2012", 10, 11, 12, 13, 15, 16],
      ["2013", 10, 11, 12, 13, 15, 16],
      ["2014", 10, 11, 12, 13, 15, 16],
      ["2015", 10, 11, 12, 13, 15, 16],
      ["2016", 10, 11, 12, 13, 15, 16]
    ];
    
// 相應(yīng)配置(每一列顯示哪些數(shù)據(jù)由columns決定)    
new Handsontable(container, {
    data: data,
    colHeaders: true,
    columns: [
      {data: 0},
      {data: 2},
      {data: 3},
      {data: 4},
      {data: 5},
      {data: 6}
    ]
  });  
  
// 作為對象數(shù)據(jù)
data = [
      {id: 1, name: "Ted Right", address: ""},
      {id: 2, name: "Frank Honest", address: ""},
      {id: 3, name: "Joan Well", address: ""},
      {id: 4, name: "Gail Polite", address: ""},
      {id: 5, name: "Michael Fair", address: ""},
    ];

new Handsontable(container5, {
    data: data,
    colHeaders: true,
    columns: [
      {data: "id"},
      {data: "name"},
      {data: "address"}
    ],
  });        
    

rowHeaders
rowHeaders屬性用來設(shè)置表格每一行的標題,有三種形式:

// 若為 true, 則行標題從1開始,依次往后
{
    rowHeaders: true,
}

// 設(shè)置為數(shù)組, 則按數(shù)組內(nèi)容顯示
{
    rowHeader: [1, 2, 3, 4, 5]
}

// 函數(shù),接收一個index參數(shù),更加靈活
{
    rowHeader: function(index) {
        return index + "AB";
    }
}

cells
cells屬性用來設(shè)置每個單元格的屬性

// 設(shè)置第一列只讀
{
    cells: function (row, col, prop) {
        var cellProperties = {};
        
        if (col === 0) {
            cellProperties.readOnly = true;
        }
        
        return cellProperties;
    }
}

stretchH
stretchH 屬性用來設(shè)置表格的展開方式,all 全列按最大寬度展開; none 緊縮的表格; last 最后一列展開

{
    stretchH: "all" // all 全列按最大寬度展開; none 緊縮的表格; last 最后一列展開
}

columns
columns屬性,用來定義列屬性,也就是每一列需要顯示數(shù)據(jù)源的哪個屬性。除此之外,也可以定義每一列的數(shù)據(jù)屬性,

{
    columns: [
      {data: "id"},     // 第一列顯示 id 屬性
      {data: "name"},   // 第二列顯示 name 屬性
      {data: "age", type: "numeric"},   // 第三列顯示 age 屬性,并且只能填數(shù)字
      {data: "address"} // 第四列顯示 address 屬性
    ],
}

columnSorting
columnSorting 用來設(shè)置表格的列是否可排序,

renderer
renderer 屬性可以自定義單元格的各種屬性

// 第三行有數(shù)據(jù)的單元格涂色
{
    renderer: function (instance, td, row, col, prop, value, cellProperties) {
        // 渲染為text類型,可選的有TimeRenderer、PasswordRenderer等不同的類型
        Handsontable.renderers.TextRenderer.apply(this, arguments);
        // 判斷條件
        if (value && row === 2) {
            td.style.backgroundColor = "#e0ecff";
        }
    }
}
事件

生成 Handsontable 實例之后,一張表格就顯示好了,如果想加入更多交互效果,就需要注冊監(jiān)聽事件。

// 實例對象
var hot = new Handsontable(container, options);

// 用實例方法addHook注冊事件
hot.addHook(key, callback); // key 為事件名

// 除了addHook 方法之外,也可以將事件名,寫入配置中
{
    afterChange: function (change) {}
}
常用事件

afterChange
afterChange 在單元格改變時觸發(fā),如編輯單元格之后,接收兩個參數(shù)changeData, source

hot.addHook("afterChange", function (changeData, source) {
    // changeData 是一個數(shù)組,第一個元素(數(shù)組),記錄所有修改信息
    if (!changeData) return;
    var change = changeData[0],
        row = change[0],
        colProp = change[1],
        preData = change[2],
        newData = change[3];
})

afterOnCellMouseDown
afterOnCellMouseDown 在鼠標點擊單元格之后觸發(fā)

// afterOnCellMouseDown 在鼠標點擊單元格之后觸發(fā),接收兩個參數(shù) event cellCoords
// event 標準鼠標點擊事件
// cellCoords 對象,保存row,col信息

hot.addHook("afterOnCellMouseDown ", function (event, cellCoords) {
    var row = cellCoords.row,
        col = cellCoords.col;
})

afterBeginEditing
afterBeginEditing 在單元格開始編輯時觸發(fā)

hot.addHook("afterBeginEditing", function (row, col) {})
方法

getCell
getCell(row, col) 獲取指定單元格

alter
alter(action, index, amount, source, keepEmptyRows) alter方法用于改變表格結(jié)構(gòu),即插入或刪除行列數(shù)據(jù)。

action 可用改變表格結(jié)構(gòu)操作insert_row、insert_col、remove_row、remove_col

index行列索引值,從0開始,insert操作將插入到該索引值的前一行/列

amount(可選,默認1):將要插入/刪除的行列數(shù)

source(可選):行或列對象

keepEmptyRows(可選):防止刪除空行,true/false

setDataAtCell
setDataAtCell(row, col, value, source) 設(shè)置某個單元格的數(shù)據(jù)

row 行號索引
col 列號索引
value 將要設(shè)置的單元格數(shù)據(jù)
source (可選)字符串標識中描述這一變化將如何改變數(shù)組(用于onAfterChange或onBeforeChange回調(diào))

生成的html結(jié)構(gòu)

如下代碼所示,生成的表格主體在ht_master中,rowHeadercolHeaderfreezingCol會clone主體部分內(nèi)容,放在其兄弟節(jié)點。同時,edit時的input會生成唯一一個textarea。

原文發(fā)布于個人博客>>歡迎訪問

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/51011.html

相關(guān)文章

  • Handsontable 類似 excel 表格輯器

    摘要:原文發(fā)布于個人博客歡迎訪問簡介是一個類似表格編輯器,支持豐富的展現(xiàn)和交互,以及多樣的單元格展現(xiàn)和配置核心由原生編寫,通過打包同類項目中,點贊最多,列表官網(wǎng)地址支持的特征的一些主要功能這里只列出主要功能,想了解更多更能,可以查詢官方文檔。這 原文發(fā)布于個人博客>>歡迎訪問 HandsonTable 簡介 Handsontable 是一個類似 excel 表格編輯器,支持豐富的展現(xiàn)和交互...

    ztyzz 評論0 收藏0
  • js-xlsx + handsontable + echarts實現(xiàn)excel上傳編輯然后顯示成圖表

    摘要:生成報表數(shù)據(jù)都處理完了之后,就是生成報表了,報表這里稍微做的靈活了一點,是要讓用戶根據(jù)上傳的數(shù)據(jù),自己選擇字段,然后用去生成對應(yīng)的報表。 js-xlsx + handsontable + echarts 實現(xiàn)在前端導(dǎo)入excel數(shù)據(jù)并生成echart報表 前言 最近都在做類似 ERP 的項目,所以呢,又碰到一個比較變態(tài)的需求(至少對我來說是),在前端導(dǎo)入 excel 文件,然后在瀏覽器...

    joy968 評論0 收藏0
  • handsontable初步認知

    摘要:待更新左上角單元格賦值問題,通過改源碼實現(xiàn)。下拉單元格高度修改,定位元素修改時下拉列表的最后一個顯示不全,有。 hansontable簡介 是一個在線類似Excel的表格編輯器,支持豐富的展現(xiàn)和交互,有多樣的單元格類型供配置。 核心是由原生JavaScript構(gòu)建,充分模塊化,支持自定義build。 除了核心表格渲染(實質(zhì)就是js操作table,計算元素位置,自定義綁定事件處理),大部...

    mrcode 評論0 收藏0
  • handsontable初步認知

    摘要:待更新左上角單元格賦值問題,通過改源碼實現(xiàn)。下拉單元格高度修改,定位元素修改時下拉列表的最后一個顯示不全,有。 hansontable簡介 是一個在線類似Excel的表格編輯器,支持豐富的展現(xiàn)和交互,有多樣的單元格類型供配置。 核心是由原生JavaScript構(gòu)建,充分模塊化,支持自定義build。 除了核心表格渲染(實質(zhì)就是js操作table,計算元素位置,自定義綁定事件處理),大部...

    wslongchen 評論0 收藏0
  • 獨立開發(fā)變現(xiàn)周刊(第28期):一個JavaScript組件做到了150萬美金收入

    摘要:分享獨立開發(fā)產(chǎn)品變現(xiàn)相關(guān)有價值的內(nèi)容,每周五發(fā)布。團隊認為做網(wǎng)站評論和與其它團隊的協(xié)作是復(fù)雜的,對于這個過程沒有真正的解決方案。官網(wǎng)實現(xiàn)美金收入的步驟個月前,我創(chuàng)建了自己的第一個賬戶,年月日。當(dāng)我把它放到上時,得到了一些最初的關(guān)注。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size...

    channg 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<