數(shù)據(jù)編輯是 DHTMLX Grid 組件所具備的眾多強(qiáng)大功能之一。將其與 Grid 的其他優(yōu)勢(shì)(如高度可定制性以及與 Suite 組件的互操作性)相結(jié)合,您可以添加自定義編輯選項(xiàng)來(lái)滿足特定用例場(chǎng)景的需求。在本文中,您將了解如何通過(guò)數(shù)據(jù)視圖編輯器來(lái)豐富 Grid 的配置。
DHTMLX 試用下載
帶自定義數(shù)據(jù)視圖編輯器的 JavaScript 網(wǎng)格表格示例
DHTMLX Grid 附帶了一系列內(nèi)置列編輯器,這使得在 Web 應(yīng)用的數(shù)據(jù)表格中添加各種編輯形式變得更加容易。但如果您正在開發(fā)一個(gè)儀表板或內(nèi)容管理系統(tǒng)(CMS),需要比基本輸入框或下拉列表編輯器更具信息性和視覺吸引力的組件,該怎么辦?此時(shí),如下方示例中的數(shù)據(jù)視圖編輯器就派上用場(chǎng)了。
點(diǎn)擊 “Owner” 列中的任何單元格,都會(huì)彈出一個(gè)卡片式列表的編輯器,其中顯示了所有可用選項(xiàng)。您可以直觀地瀏覽并選擇合適的選項(xiàng),所選單元格的內(nèi)容也會(huì)隨之更新。
在 DHTMLX Grid 中添加自定義數(shù)據(jù)視圖編輯器的分步指南
接下來(lái),我們將介紹如何在使用 DHTMLX 的 JavaScript 網(wǎng)格表格中集成自定義數(shù)據(jù)視圖編輯器。使用我們的 Grid 組件時(shí),您無(wú)需引入第三方數(shù)據(jù)視圖組件,也不必從頭開始構(gòu)建。相反,您可以使用 Suite 庫(kù)中相應(yīng)的 JavaScript DataView 和 Popup 組件,它們可以與 Grid 無(wú)縫集成,為您節(jié)省大量時(shí)間和精力。不過(guò),我們?nèi)孕桕U明一些關(guān)鍵點(diǎn),以使這種集成更加高效和簡(jiǎn)便。
步驟 1:初始化和配置網(wǎng)格表格
首先,初始化一個(gè) JavaScript 數(shù)據(jù)表格并指定其結(jié)構(gòu)和行為。columns 配置屬性定義了每列的 id、類型、格式和編輯選項(xiàng),包括后續(xù)將補(bǔ)充基于 DataView 編輯器的 “Owner” 列。
為此,您需要使用mark屬性為 “Owner” 列的單元格分配一個(gè)特殊的 CSS 類(dataview-editor),以觸發(fā)自定義編輯器。同時(shí),應(yīng)設(shè)置editable: false以防止該列使用默認(rèn)編輯方式。
const grid = new dhx.Grid("grid", {
columns: [
{ id: "project", header: [{ text: "Project" }], width: 180 },
{
id: "owner",
header: [{ text: "Owner" }],
mark: () => "dataview-editor",
editable: false,
autoWidth: true
},
… // Config for other columns
],
selection: true,
editable: true,
keyNavigation: false,
data,
});
在這一步中,您還需要定義網(wǎng)格的默認(rèn)行為 —— 啟用編輯、選擇功能,禁用鍵盤導(dǎo)航,并加載初始數(shù)據(jù)。
步驟 2:創(chuàng)建數(shù)據(jù)視圖編輯器
接下來(lái),初始化 DHTMLX DataView,并為 “Owner” 列中用戶編輯時(shí)顯示的單元格提供自定義 HTML 布局。此布局通過(guò)template屬性定義,包含視覺豐富的卡片格式,用于顯示人員的照片、姓名、職位、電話號(hào)碼、生日和電子郵件。
const dataview = new dhx.DataView(null, {
selection: true,
itemsInRow: 2,
template: ({ name, photo, post, phone, birthday, mail }) => (`
... // Custom HTML layout for cards appearing in the editor
`),
`),
data: owner_data,
});
這通過(guò)提供結(jié)構(gòu)化且直觀的視覺效果改善了編輯體驗(yàn)。本教程的最后一步將詳細(xì)介紹此布局的樣式設(shè)置。
步驟 3:將 DataView 附加到彈出窗口
現(xiàn)在,您需要使用 Suite 庫(kù)中的 JavaScript Popup 組件創(chuàng)建一個(gè)彈出窗口:
const popup = new dhx.Popup({
css: "dhx_widget--border-shadow popup",
});
popup.attach(dataview);
通過(guò)popup.attach(dataview)將先前創(chuàng)建的 DataView 布局插入到彈出窗口中。彈出窗口僅在需要時(shí)(即用戶點(diǎn)擊 “Owner” 列的任意單元格時(shí))顯示編輯器的豐富用戶界面。通過(guò)css: "dhx_widget–border-shadow popup"添加額外樣式,使彈出窗口在視覺上更具辨識(shí)度,并與其他 UI 元素匹配。
為了在用戶點(diǎn)擊 “Owner” 單元格時(shí)顯示彈出窗口,需通過(guò)列的 HTML 模板應(yīng)用的dataview-editor類,為 “Owner” 列的單元格附加事件處理程序。
eventHandlers: {
onclick: {
"dataview-editor": (event, { row, col }) => {
const ownrer = dataview.data.find(item => item.name == row[col.id]);
dataview.selection.add(ownrer.id);// Highlights the selected card in the DataView
popup.show(event.target, { centering: false });// Opens the popup near the clicked element
}
}
},
步驟 4:選擇后更新網(wǎng)格單元格
當(dāng)在數(shù)據(jù)視圖編輯器中選中某個(gè)項(xiàng)目時(shí),需要使用afterSelect事件更新網(wǎng)格單元格并隱藏彈出窗口:
dataview.events.on("AfterSelect", () => {
const owner = dataview.selection.getItem();
const { row } = grid.selection.getCell();
grid.data.update(row.id, { "owner": owner.name });
popup.hide();
});
這一步使自定義編輯器按預(yù)期運(yùn)行 —— 用戶點(diǎn)擊單元格、選擇卡片,網(wǎng)格會(huì)實(shí)時(shí)更新內(nèi)容。
步驟 5:為數(shù)據(jù)視圖編輯器添加自定義樣式以優(yōu)化用戶體驗(yàn)
自定義數(shù)據(jù)視圖編輯器功能完善后,可進(jìn)一步提升其視覺吸引力。使用 DHTMLX 組件時(shí),可對(duì)數(shù)據(jù)視圖項(xiàng)應(yīng)用以下預(yù)定義 CSS 布局模板之一:
…
.dhx_dataview_template_d__picture {
width: 110px;
min-width: 110px;
background: center center/cover no-repeat #f7f7f7;
}
.dhx_dataview_template_d__picture:before {
content: "";
display: block;
padding-top: 100%;
}
.dhx_dataview_template_d__body {
padding-left: 12px;
width: 150px;
}
…
這些樣式用于在初始化dhx.DataView時(shí),對(duì)步驟 2 中提供的 DataView 項(xiàng)模板進(jìn)行結(jié)構(gòu)和樣式設(shè)置。
按照上述步驟操作,您即可如我們的示例所示,創(chuàng)建一個(gè)帶有自定義數(shù)據(jù)視圖編輯器的 JavaScript 數(shù)據(jù)表格。
總結(jié)
本教程生動(dòng)展示了自定義 DHTMLX Grid 的眾多方式之一。其豐富的 API 使您能夠突破默認(rèn)設(shè)置的限制,為 Grid 擴(kuò)展新的功能和設(shè)計(jì)模式。該組件提供了對(duì) UI 和數(shù)據(jù)行為的高度控制權(quán)。無(wú)論您是在構(gòu)建普通的儀表板還是復(fù)雜的企業(yè)級(jí)應(yīng)用,DHTMLX Grid 都是實(shí)現(xiàn)您 Web 開發(fā)目標(biāo)的可靠工具。
慧都是?家?業(yè)數(shù)字化解決?案公司,專注于軟件、?油與?業(yè)領(lǐng)域,以深?的業(yè)務(wù)理解和?業(yè)經(jīng)驗(yàn),幫助企業(yè)實(shí)現(xiàn)智能化轉(zhuǎn)型與持續(xù)競(jìng)爭(zhēng)優(yōu)勢(shì)。
慧都科技是DHTMLX在中國(guó)的官方授權(quán)代理商,提供DHTMLX系列產(chǎn)品免費(fèi)試用,咨詢,正版銷售等于一體的專業(yè)化服務(wù)。DHTMLX專注于JavaScript和HTML5 UI小部件和庫(kù),以幫助開發(fā)人員更快地構(gòu)建功能豐富的、交互式的Web界面。 遵循現(xiàn)代網(wǎng)絡(luò)開發(fā)的標(biāo)準(zhǔn)和做法,DHTMLX提供針對(duì)桌面和移動(dòng)設(shè)備定制的優(yōu)秀Web應(yīng)用程序框架。
標(biāo)簽:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn