跳到內容
+

數據網格 - 儲存格選取

讓使用者選取個別儲存格或儲存格範圍。

啟用儲存格選取

預設情況下,「數據網格」讓使用者選取個別列。使用 Data Grid Premium,您可以套用 cellSelection 屬性,讓使用者選取個別儲存格或儲存格範圍。

<DataGridPremium cellSelection />

選取儲存格

套用 cellSelection 屬性後,使用者可以點擊儲存格來選取單一儲存格,或是在儲存格處於焦點時按下 Shift+Space。按住 Cmd 鍵 (或 Windows 上的 Ctrl 鍵) 並點擊儲存格,即可選取多個儲存格。按住 Cmd 鍵 (或 Windows 上的 Ctrl 鍵) 並點擊已選取的儲存格,即可取消選取。

若要選取儲存格範圍,使用者可以

  • 點擊儲存格,將滑鼠拖曳到附近的儲存格上,然後放開。
  • 點擊一個儲存格,然後按住 Shift 鍵並點擊另一個儲存格。如果點擊第三個儲存格,則選取範圍將從最後點擊的儲存格重新開始。
  • 使用方向鍵將焦點放在儲存格上,然後按住 Shift 鍵並導航到另一個儲存格—如果放開 Shift 鍵並再次按下,則選取範圍將從最後聚焦的儲存格重新開始。

試試看以下示範中選取儲存格的各種操作—您可以切換列選取功能的開關,看看這兩個選取功能如何並行運作。

按下 Enter 鍵開始編輯

控制儲存格選取

您可以使用 cellSelectionModel 屬性來控制選取哪些儲存格。此屬性接受一個物件,其鍵對應於包含選取儲存格的列 ID。每個鍵的值本身也是一個物件,該物件具有作為鍵的欄位和作為其選取狀態的布林值。您可以將其設定為 true 以選取儲存格,或設定為 false 以取消選取。從物件中移除欄位也會取消選取儲存格。

// Selects the cell with field=name from row with id=1
<DataGridPremium cellSelectionModel={{ 1: { name: true } }} />

// Unselects the cell with field=name from row with id=1
<DataGridPremium cellSelectionModel={{ 1: { name: false } }} />

建立新的選取範圍時,會使用更新的模型呼叫傳遞給 onCellSelectionModelChange 屬性的回呼。使用此值來更新目前的模型。

以下示範顯示如何組合這些屬性來建立類似 Excel 的公式欄位—嘗試一次更新多個儲存格,方法是選取它們並在頂端的欄位中輸入新值。

自訂範圍樣式

當多個選取的儲存格形成任何大小的連續範圍時,以下類別名稱會套用至範圍邊緣的儲存格

  • MuiDataGrid-cell--rangeTop:套用至範圍第一列中的所有儲存格
  • MuiDataGrid-cell--rangeBottom:套用至範圍最後一列中的所有儲存格
  • MuiDataGrid-cell--rangeLeft:套用至範圍第一欄中的所有儲存格
  • MuiDataGrid-cell--rangeRight:套用至範圍最後一欄中的所有儲存格

您可以使用這些類別來建立 CSS 選取器,以鎖定每個範圍的特定角落—例如,以下示範在範圍外圍新增了邊框。

按下 Enter 鍵開始編輯

apiRef

「數據網格」透過 apiRef 物件公開了一組方法,這些方法用於實作儲存格選取功能。以下參考資料說明了相關的功能。請參閱 API 物件 以取得更多詳細資訊。

簽章
getCellSelectionModel: () => GridCellSelectionModel
簽章
getSelectedCellsAsArray: () => GridCellCoordinates[]
簽章
isCellSelected: (id: GridRowId, field: GridColDef['field']) => boolean
簽章
selectCellRange: (start: GridCellCoordinates, end: GridCellCoordinates, keepOtherSelected?: boolean) => void
簽章
setCellSelectionModel: (newModel: GridCellSelectionModel) => void