分享方式:


可編輯的 Grid 物件和方法 (用戶端參考)

 

發佈日期: 2017年1月

適用對象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

您可以設定事件處理常式來訂閱可編輯網格觸發的事件,當資料選取、變更或儲存在可編輯的網格中時。 可編輯的網格支援非可編輯網格可支援的大部分用戶端方法。 其他資訊:在 Dynamics 365 中使用可編輯的網格

備註

可編輯的網格已在 Dynamics 365 (Online 和內部部署) 的 2016 年 12 月更新 推出。

本主題內容

可編輯的網格事件

可編輯網格方法

可編輯的網格事件

可編輯的網格支援下列事件,您可用來註冊和執行用戶端指令碼。 您可以註冊這些事件,使用 Microsoft Dynamics 365 頁面的 [事件] 索引標籤來啟用實體或唯讀網格的可編輯網格:

  • OnRecordSelect

  • OnChange

  • OnSave

重要

使用執行內容 getFormContext 方法建立通用的事件處理常式,可在可編輯網格 GridCell 或表單欄位上運作,取決於執行事件處理常式的位置。其他資訊:getFormContext

OnRecordSelect

OnRecordSelect 事件會發生,當單一列 (記錄) 在可編輯網格中選取時。 此事件不會發生,如果使用者在同一列中選取不同的儲存格,或選取多列。

OnChange

OnChange 事件會發生,當可編輯網格中儲存格的值變更,且儲存格失去焦點時。 此事件也可能發生,當屬性值使用 setValue 方法更新時。

OnSave

OnSave 事件會發生在傳送更新的資訊至伺服器之前,以及當下列任何情況發生時:

  • 記錄選取有變更。

  • 使用者明確觸發儲存操作,使用可編輯網格的儲存按鈕。

  • 使用者從可編輯網格套用排序、篩選、群組、分頁或導覽操作,同時有擱置中的變更時。

針對 OnSave 事件考量的重點:

  • 如果使用者依序編輯同一個記錄中的多欄,OnSave 事件只會引發一次,確保最佳效能且表單行為相容。

  • 可編輯網格和上層表單各自有儲存按鈕。 按一下其中一個儲存按鈕,不會儲存另一個的變更。

  • 當導覽作業在其內容之外執行時,可編輯網格不會儲存擱置的變更。 如果控制項有未儲存的資料,資料可能會遺失。 因此,OnSave 事件可能不會引發。 例如,當使用表單查詢欄位或透過功能區瀏覽至不同的記錄時,這就可能會發生。

  • 按下可編輯網格中的重新整理按鈕,會造成捨棄所有擱置中的變更,而且不會引發 OnSave 事件。

  • 可編輯網格控制項不會實作自動儲存計時器。

  • 可編輯網格會抑制重複資料偵測規則。

可編輯網格方法

可編輯網格支援一些新的方法和唯讀網格支援的大部分現有的方法:

  • GridControl

  • 格線

  • GridRow

  • GridRowData

  • GridEntity

  • GridAttribute

  • GridCell

GridControl

如果您知道可編輯網格控制項的名稱,可以使用下列程式碼存取它。 例如,若要存取預設客戶表單中的 CONTACTS 子格:

var contactsGrid = Xrm.Page.getControl("Contacts");

提示

若要識別表單的網格控制項名稱,而不開啟表單編輯器,請參閱 使用瀏覽器開發人員工具 的資訊。

可編輯網格支援下列唯讀子格控制項方法:getEntityNamegetGrid

格線

可編輯網格支援 GridControl.getGrid 方法傳回的 Grid 的下列方法:getRowsgetSelectedRowsgetTotalRecordCount

GridRow

可編輯網格支援 GridRowgetData 方法,其為 Grid.getRowsGrid.getSelectedRows 方法所傳回。

GridRow 也支援 data 集合,提供方式來搭配可編輯網格列使用。 如需用來存取集合中資料的方法的資訊,請參閱集合 (用戶端參考)

GridRowData

可編輯網格支援 GridRow.getData 方法傳回的 GridRowDatagetEntity 方法。

GridRowData 也提供方法來擷取可編輯網格列中所顯示記錄的特定資訊,包括列中包含的所有屬性的集合。 屬性資料限於可編輯網格代表的欄。 如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)

GridEntity

可編輯網格支援 GridRowData.getEntity 方法傳回的 GridEntity 的下列方法:

除了使用 GridRowData.getEntity 方法之外,您可以直接存取 GridRowData.entity 物件來擷取 GridEntity

GridEntity 也支援 attributes 集合,提供方法來使用可編輯網格中實體的屬性集合。 每個屬性 (GridAttribute) 都代表可編輯網格的儲存格中的資料,並包含與屬性相關的所有儲存格的參考。 如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)

GridAttribute

GridAttribute 支援所選取網格列的屬性的下列方法:getNamegetRequiredLevelsetRequiredLevelgetValuesetValue

使用 Grid.getSelectedRows 方法擷取可編輯網格中選取的列。

GridAttribute 也支援所選取網格列的屬性的 controls 集合,提供方法來使用與屬性相關聯的儲存格集合。 所選取網格列的每個儲存格 (GridCell) 類似表單中的控制項,繫結至可編輯網格中的屬性。 如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)

提示

基於效能因素,可編輯網格中的列 (記錄) 無法編輯,直到選取記錄。 使用者必須選取網格中的單一記錄才能進行編輯。 選取可編輯網格中的記錄後,Dynamics 365 會在內部評估各種項目,包括使用者對記錄的存取權、記錄是否使用中,以及欄位驗證,確保您編輯資料時資料的安全性和有效性。 考慮使用 OnRecordSelect 事件搭配 getFormContext 方法,來存取可編輯狀態的網格中的記錄。

GridCell

除了 setNotificationclearNotification 之外,GridCell 針對控制項支援下列方法:

備註

可編輯網格一次只能顯示一個通知。

getDisabled

傳回儲存格是否已停用 (唯讀)。

gridCellObj.getDisabled()
  • 傳回值
    類型: 布林。 如果儲存格已停用則為 true,否則為 false。

setDisabled

設定儲存格是否已停用。

gridCellObj.setDisabled(bool)
  • 引數
    類型: 布林。 如果必須停用儲存格則為 true,否則為 false。

  • 備註
    啟用唯讀儲存格進行編輯,可能會造成記錄儲存時發生錯誤。 如果伺服器將欄位視為唯讀,則修改值可能會發生錯誤。 在使用者沒有記錄的寫入權限、記錄已停用,或使用者沒有必要的欄位層級安全性權限時,這種情況就可能會發生。

getLabel

傳回包含儲存格的欄的標籤。

gridCellObj.getLabel()
  • 傳回值
    類型: 字串。 欄的標籤。

另請參閱

Grid (唯讀) 物件和方法 (用戶端參考)
在 Dynamics 365 中使用可編輯的網格

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權