props

名稱及修飾詞 類型 預設值 約束 說明
items.sync Array required: true 資料來源
columns.sync Array (見columns欄位定義) required: true
validator: (columns) => columns.every((column) => column.key) 欄位定義
(見columns欄位定義)
displayingColumnKeys.sync Array columns.filter(col => col.visible).map(col => col.key) 目前顯示欄位的識別鍵陣列
rowKey String 'id' 資料列識別鍵(通常為主鍵PK)
selected.sync Array [] 已勾選的資料列識別鍵
searchTerm.sync String '' 搜尋關鍵詞
searchFilter.sync Object columns.filter(col => col.visible).reduce((prev, curr) => ({...prev, [curr.key]: null}), {}) 搜尋篩選欄位物件
ex: { columnKeyA: 'keyASearchTerm', columnKeyB: 'keyBSearchTerm' }
filtering.sync Object { ignoreCase: true, logicOperation: 'and' } 篩選資訊物件
ignoreCase: 搜尋比對時忽略大小寫
logicOperation: 所有搜尋條件的邏輯運算模式(or, and)
sorting.sync Object { key: '', direction: 'asc' } 排序資訊物件
key: 排序欄位屬性鍵
direction: 排序方向(asc, desc)
paging.sync Object { page: 1, itemsPerPage: 100 } 分頁資訊物件
page: 頁碼
itemsPerPage: 每頁幾筆(小於等於0者不分頁)
paginator.sync Object { showFirst: false, showPrev: true, showPrevGrp: true, showPages: true, showNextGrp: true, showNext: true, showLast: false, pageLinks: 5 } 分頁器資訊物件
showFirst: 顯示首頁連結
showPrev: 顯示上一頁連結
showPrevGrp: 顯示上一頁群連結
showPages: 顯示頁碼連結
showNextGrp: 顯示下一頁群連結
showNext: 顯示下一頁連結
showLast: 顯示末頁連結
pageLinks: 頁碼連結數量
itemsPerPageOptions.sync Array [10, 25, 50, 100] (options) => options.every((option) => !isNaN(option)) 每頁幾筆下拉選單選項
serverTotalItems Number undefined 伺服器資料總筆數,有提供時以伺服器端搜尋、排序、分頁(request事件處理)
showToolbar Boolean true 是否顯示工具列(新增、搜尋)
showCreate Boolean true 是否顯示新增按鈕
showSearch Boolean true 是否顯示搜尋框
showMenubar Boolean true 是否顯示選單列(刪除勾選、匯出、每頁幾筆、顯示欄位)
showDestroy Boolean true 是否顯示刪除勾選按鈕
showExport Boolean true 是否顯示匯出下拉選單
showItemsPerPage Boolean true 是否顯示每頁幾筆下拉選單
showDisplayingColumns Boolean true 是否顯示顯示欄位下拉選單
showPagebar Boolean true 是否顯示分頁列(分頁器、分頁資訊)
showPaginator Boolean true 是否顯示分頁器
showPageInfo Boolean true 是否顯示分頁資訊
pagebarPosition String 'top' 'top', 'bottom' 分頁列位置
toolbarClass String, Object, Array undefined 工具列樣式類別
toolbarStyle Object, Array undefined 工具列樣式
menubarClass String, Object, Array undefined 選單列樣式類別
menubarStyle Object, Array undefined 選單列樣式
pagebarClass String, Object, Array undefined 分頁列樣式類別
pagebarStyle Object, Array undefined 分頁列樣式
exportExcel Function undefined 自訂匯出Excal函式
exportPdf Function undefined 自訂匯出Pdf函式
exportName String 'export_data' 自訂匯出預設檔案名稱
exportColumnKeys Array columns.filter(col => col.visible).map(col => col.key) 匯出欄位的識別鍵陣列
showSelection Boolean true 是否顯示資料列選取方塊
selectionsThClass String, Object, Array undefined 資料列選取方塊表頭樣式類別
selectionsThStyle Object, Array undefined 資料列選取方塊表頭樣式
selectionsTdClass String, Object, Array undefined 資料列選取方塊儲存格樣式類別
selectionsTdStyle Object, Array undefined 資料列選取方塊儲存格樣式
showActions Boolean true 是否顯示資料列操作動作儲存格
actionsThClass String, Object, Array undefined 資料列操作動作表頭樣式類別
actionsThStyle Object, Array undefined 資料列操作動作表頭樣式
actionsTdClass String, Object, Array undefined 資料列操作動作儲存格樣式類別
actionsTdStyle Object, Array undefined 資料列操作動作儲存格樣式
showRead Boolean true 是否顯示資料列檢視按鈕
showUpdate Boolean true 是否顯示資料列編輯按鈕
showDelete Boolean true 是否顯示資料列刪除按鈕
emptyText String '查無資料!' 查無資料訊息文字
inlineEditItem.sync Object null 行內編輯項目
smallTable Boolean false 是否為小型表格(按鈕樣式類別加上btn-sm,表單控制項樣式類別加上form-control-sm,表格樣式類別加上table-sm)
tableClass String, Object, Array undefined 表格樣式類別
tableStyle Object, Array undefined 表格樣式
bordered Boolean true 表格是否加上table-bordered樣式類別
striped Boolean true 表格是否加上table-striped樣式類別
hover Boolean true 表格是否加上table-hover樣式類別
cloneMode String 'shallowcopy' 'nocopy', 'shallowcopy', 'deepcopy' 物件克隆模式(不拷貝、淺拷貝、深拷貝)

events

事件 處理函式原型 說明
request @request="({ searchTerm, searchFilter, filtering, sorting, paging }) => onRequest({ searchTerm, searchFilter, filtering, sorting, paging })"
事件參數:
searchTerm: 搜尋關鍵詞
searchFilter: 搜尋篩選欄位物件
filtering: 篩選資訊物件
sorting: 排序資訊物件
paging: 分頁資訊物件 觸發伺服器請求時發出
範例:
async onRequest({ searchTerm, searchFilter, filtering, sorting, paging }) {
console.log('onRequest');
const { data } = await list({
params: {
searchTerm,
searchFilter,
filteringIgnoreCase: filtering.ignoreCase,
sortingKey: sorting.key,
sortingDirection: sorting.direction,
pagingPage: paging.page,
pagingItemsPerPage: paging.itemsPerPage
}
});
//console.log(data);
this.serverTotalItems = data.serverTotalItems;
this.items = data.items;

//this.searchTerm = searchTerm; //this.searchFilter = searchFilter; //this.filtering = filtering; //this.sorting = sorting; //this.paging = paging; } | | create-item | @create-item="(item, itemIndex) => onCreateItem(item, itemIndex)" 事件參數: item: 資料來源項目 itemIndex: 新增資料來源的索引位置 | 於新增資料來源項目時觸發 ex: async onCreateItem(item, index) { this.items.splice(index, 0, item); this.inlineEditItem = Object.assign({}, item); } | | destroy-items | @destroy-items="(selected) => onDestroyItems(selected)" 事件參數: selected: 已勾選的資料列識別鍵 | 於刪除勾選時觸發 | | change-filtering | @change-filtering="({ searchTerm, searchFilter }) => onChangeFiltering({ searchTerm, searchFilter })" 事件參數: searchTerm: 搜尋關鍵詞 searchFilter: 搜尋篩選欄位物件 | 於篩選時觸發 | | change-sorting | @change-sorting="({ key, direction }) => onChangeSorting({ key, direction })" 事件參數: key: 排序欄位屬性鍵 direction: 排序方向(asc, desc) | 於排序時觸發 | | change-paging | @change-paging="({ page, itemsPerPage }) => onChangePaging({ page, itemsPerPage })" 事件參數: page: 頁碼 itemsPerPage: 每頁幾筆(小於等於0者不分頁) | 於分頁時觸發 | | validate-item-failed | @validate-item-failed="({ errors, item }) => onValidateItemFailed({ errors, item })" 事件參數: { errors, item } errors: 錯誤資訊物件({ key: (欄位識別鍵), errors: (錯誤訊息陣列), errMsg: (以分隔符號串接之錯誤訊息) }) item: 行內編輯項目 | 於驗證行內編輯項目失敗時觸發 | | save-create-item | @save-create-item="(item) => onSaveCreateItem(item)" 事件參數: item: 行內編輯項目 | 於儲存新增行內編輯項目時觸發(已通過驗證) | | save-update-item | @save-update-item="(item) => onSaveUpdateItem(item)" 事件參數: item: 行內編輯項目 | 於儲存編輯行內編輯項目時觸發(已通過驗證) | | cancel-item | @cancel-item="(item) => onCancelItem(item)" 事件參數: item: 行內編輯項目 | 於取消行內編輯項目時觸發 | | read-item | @read-item="(item) => onReadItem(item)" 事件參數: item: 資料來源項目 | 於檢視資料來源項目時觸發 | | update-item | @update-item="(item) => onUpdateItem(item)" 事件參數: item: 資料來源項目 | 於編輯資料來源項目時觸發 | | delete-item | @delete-item="(item) => onDeleteItem(item)" 事件參數: item: 資料來源項目 | 於刪除資料來源項目時觸發 |

scoped slots

名稱 slotProps 說明
toolbar-left-before compData: $data 工具列左側前方的插槽
toolbar-left-after compData: $data 工具列左側後方的插槽
toolbar-right-before compData: $data 工具列右側前方的插槽
toolbar-right-after compData: $data 工具列右側後方的插槽
menubar-left-before compData: $data 選單列左側前方的插槽
menubar-left-after compData: $data 選單列左側後方的插槽
menubar-right-before compData: $data 選單列右側前方的插槽
menubar-right-after compData: $data 選單列右側後方的插槽
pagebar-left-before compData: $data 分頁列左側前方的插槽
pagebar-left-after compData: $data 分頁列左側後方的插槽
pagebar-right-before compData: $data 分頁列右側前方的插槽
pagebar-right-after compData: $data 分頁列右側後方的插槽
edit-[columnKey] item: 行內編輯項目
column: 欄位定義 欄位的編輯模式插槽
item-[columnKey] item: 資料來源項目
column: 欄位定義 欄位的顯示模式插槽

public methods

方法函式原型 參數 回傳值 說明
doFilter(searchTerm, searchFilter) searchTerm: 搜尋關鍵詞
searchFilter: 搜尋篩選欄位物件 執行篩選
doSort(key, direction) key: 排序欄位屬性鍵
direction: 排序方向(asc, desc) 執行排序
doPage(page, itemsPerPage) page: 頁碼
itemsPerPage: 每頁幾筆(小於等於0者不分頁) 執行分頁
getExportParams() 匯出參數
{ exportItems, exportColumns } 取得匯出參數
exportItems: 匯出資料來源
exportColumns: 匯出欄位({ key, header })
doExportExcel() 匯出Excel
doExportPdf() 匯出Pdf
getProcessedItems() 已處理資料來源 取得已處理資料來源(已篩選、已排序)
getPagedItems() 已處理並分頁後的資料來源 已處理並分頁後的資料來源(已篩選、已排序、已分頁)
validateInlineEditItem() 是否通過驗證 驗證行內編輯項目
clearErrors() 清除錯誤訊息
getErrors() 錯誤資訊物件
{ key, errors, errMsg }
key: (欄位識別鍵)
errors: (錯誤訊息陣列)
errMsg: (以分隔符號串接之錯誤訊息) 取得錯誤資訊物件

columns欄位定義

| --- | --- | --- | --- | --- |

control輸入控制項資訊

| --- | --- | --- | --- | --- |

control.type輸入控制項類型

| --- | --- | --- |

// 預設輸入控制項資料類型
const defaultControlTypes = {
  [String]: 'input',
  [Number]: 'input',
  [Boolean]: 'checkbox',
  [Array]: 'checkboxlist',
  [Date]: 'input'
};

// 適用資料類型
const controlAllowedDataTypes = {
  input: [String, Number, Date],
  select: [String, Number],
  radiobuttonlist: [String, Number],
  checkbox: [Boolean, String, Number],
  checkboxlist: [Array],
  textarea: [String]
};