可編輯的 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");
提示
若要識別表單的網格控制項名稱,而不開啟表單編輯器,請參閱 使用瀏覽器開發人員工具 的資訊。
可編輯網格支援下列唯讀子格控制項方法:getEntityName 和 getGrid。
格線
可編輯網格支援 GridControl.getGrid 方法傳回的 Grid 的下列方法:getRows、getSelectedRows 和 getTotalRecordCount。
GridRow
可編輯網格支援 GridRow 的 getData 方法,其為 Grid.getRows 和 Grid.getSelectedRows 方法所傳回。
GridRow 也支援 data 集合,提供方式來搭配可編輯網格列使用。 如需用來存取集合中資料的方法的資訊,請參閱集合 (用戶端參考)。
GridRowData
可編輯網格支援 GridRow.getData 方法傳回的 GridRowData 的 getEntity 方法。
GridRowData 也提供方法來擷取可編輯網格列中所顯示記錄的特定資訊,包括列中包含的所有屬性的集合。 屬性資料限於可編輯網格代表的欄。 如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)。
GridEntity
可編輯網格支援 GridRowData.getEntity 方法傳回的 GridEntity 的下列方法:
除了使用 GridRowData.getEntity 方法之外,您可以直接存取 GridRowData.entity 物件來擷取 GridEntity。
GridEntity 也支援 attributes 集合,提供方法來使用可編輯網格中實體的屬性集合。 每個屬性 (GridAttribute) 都代表可編輯網格的儲存格中的資料,並包含與屬性相關的所有儲存格的參考。 如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)。
GridAttribute
GridAttribute 支援所選取網格列的屬性的下列方法:getName、getRequiredLevel、setRequiredLevel、getValue 和 setValue。
使用 Grid.getSelectedRows 方法擷取可編輯網格中選取的列。
GridAttribute 也支援所選取網格列的屬性的 controls 集合,提供方法來使用與屬性相關聯的儲存格集合。 所選取網格列的每個儲存格 (GridCell) 類似表單中的控制項,繫結至可編輯網格中的屬性。 如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)。
提示
基於效能因素,可編輯網格中的列 (記錄) 無法編輯,直到選取記錄。 使用者必須選取網格中的單一記錄才能進行編輯。 選取可編輯網格中的記錄後,Dynamics 365 會在內部評估各種項目,包括使用者對記錄的存取權、記錄是否使用中,以及欄位驗證,確保您編輯資料時資料的安全性和有效性。 考慮使用 OnRecordSelect 事件搭配 getFormContext 方法,來存取可編輯狀態的網格中的記錄。
GridCell
除了 setNotification 和 clearNotification 之外,GridCell 針對控制項支援下列方法:
注意
可編輯網格一次只能顯示一個通知。
getDisabled
傳回儲存格是否已停用 (唯讀)。
gridCellObj.getDisabled()
- 傳回值
類型: 布林。 如果儲存格已停用則為 true,否則為 false。
setDisabled
設定儲存格是否已停用。
gridCellObj.setDisabled(bool)
引數
類型: 布林。 如果必須停用儲存格則為 true,否則為 false。備註
啟用唯讀儲存格進行編輯,可能會造成記錄儲存時發生錯誤。 如果伺服器將欄位視為唯讀,則修改值可能會發生錯誤。 在使用者沒有記錄的寫入權限、記錄已停用,或使用者沒有必要的欄位層級安全性權限時,這種情況就可能會發生。
getLabel
傳回包含儲存格的欄的標籤。
gridCellObj.getLabel()
- 傳回值
類型: 字串。 欄的標籤。
另請參閱
Grid (唯讀) 物件和方法 (用戶端參考)
在 Dynamics 365 中使用可編輯的網格
Microsoft Dynamics 365
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權