Grid 物件和方法 (用戶端參考)

 

發行︰ 2016年11月

適用於: Dynamics CRM 2015

使用新的事件和物件,在 Microsoft Dynamics CRM Online 2015 更新 1 可以透過表單的子格控制項執行更多功能。其他資訊:撰寫子格的指令碼

重要

如果是 Microsoft Dynamics CRM Online 組織,只有在組織已更新至 Dynamics CRM Online 2015 更新 1 時,才能使用此功能。 這項功能不適用於 Dynamics CRM (內部部署)。

本主題內容

  • GridControl
    GridControl 的事件和方法:OnLoad 事件、addOnLoad、getEntityName、getGrid、getViewSelector 和 removeOnLoad。

  • 格線
    GridControl.getGrid 方法所傳回的 Grid 的方法:getRows、getSelectedRows 和 getTotalRecordCount。

  • GridRow
    **Grid.**getRows 和 **Grid.**getSelectedRows 方法所傳回的 GridRow 的 getData 方法。

  • GridRowData
    **GridRow.**getData 方法所傳回的 GridRowData 的 getEntity 方法。

  • GridEntity
    **GridRowData.**getEntity 方法所傳回的 GridEntity 的方法:getEntityName、getEntityReference、getId 和 getPrimaryAttributeValue。

  • ViewSelector
    GridControl.getViewSelector 方法所傳回的 ViewSelector 的方法:getCurrentView、isVisible 和 setCurrentView。

GridControl

在 CRM Online 2015 更新 1 之前,子格控制項的唯一方法是 refresh。 當您知道子格控制項名稱時,您可以使用下列程式碼存取它,例如,存取預設客戶表單的 [連絡人] 子格。

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

提示

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

做為 Xrm.Page.ui 控制項,GridControl 也有所有標準控制項方法:getControlType標籤 方法、getParent可見 方法、setFocus通知 方法,以及 refresh。 如需這些方法的詳細資訊,請參閱 Xrm.Page.ui 控制項 (用戶端參考)

OnLoad 事件

新增事件處理常式至此事件,在子格重新整理時執行。 這包括使用者按一下欄標題排序值時。 使用 GridControl.addOnLoad 和 GridControl.removeOnLoad 方法來管理事件處理常式 (通常是在表單 Onload 事件中)。

addOnLoad

使用此方法新增事件處理常式至 GridControlOnLoad 事件。

**參數類型:**函數

範例: 將函數 myContactsGridOnloadFunction 新增至連絡人子格 OnLoad 事件。

var myContactsGridOnloadFunction = function () { console.log("Contacts Subgrid OnLoad occurred") };
Xrm.Page.getControl("Contacts").addOnLoad(myContactsGridOnloadFunction);

getEntityName

使用此方法取得在格線顯示的實體資料的邏輯名稱。

**傳回值類型:**字串

範例: 設定 opportunitySubgrids 變數為顯示商機記錄的子格控制項陣列。

var opportunitySubgrids = Xrm.Page.getControl(function (ctrl, i) {
 if (ctrl.getControlType() == "subgrid") {
  return (ctrl.getEntityName() == "opportunity");
 }
 else {
  return false;
 }
})

getGrid

使用此方法存取 GridControl 中的可用 格線。

**傳回值類型:**格線

範例: 設定 contactsSubgridGrid 變數為連絡人子格的格線。

var contactsSubgridGrid = Xrm.Page.getControl("Contacts").getGrid();

getViewSelector

使用此方法存取 GridControl 的可用 ViewSelector。

**傳回值類型:**ViewSelector

範例: 設定 contactsSubgridViewSelector 變數為連絡人子格的檢視表選取器。

var contactsSubgridViewSelector = Xrm.Page.getControl("Contacts").getViewSelector();

removeOnLoad

使用此方法從 GridControlOnLoad 事件 移除事件處理常式。

**參數類型:**函數

範例: 將函數 myContactsGridOnloadFunction 新增至連絡人子格 OnLoad 事件,然後移除它。

var myContactsGridOnloadFunction = function () { console.log("Contacts Subgrid OnLoad occurred") };
Xrm.Page.getControl("Contacts").addOnLoad(myContactsGridOnloadFunction);
Xrm.Page.getControl("Contacts").removeOnLoad(myContactsGridOnloadFunction);

格線

使用 Grid 方法存取方格中資料的相關資訊。Grid 是由 GridControl.getGrid 方法傳回。

getRows

傳回 Grid 中每個 GridRow 的集合。

**傳回值類型:**集合

範例: 設定 allRows 變數為連絡人子格中 GridRow 的集合。

var allRows = Xrm.Page.getControl("Contacts").getGrid().getRows();

備註:

如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)

getSelectedRows

傳回 Grid 中每個選定 GridRow 的集合。

**傳回值類型:**集合

範例:以連絡人子格中選定列的實體參照填入 selectedEntityReferencesArray 變數。

//Get an array of entity references for all selected rows in the subgrid
var selectedEntityReferences = [];
var selectedRows = Xrm.Page.getControl("Contacts").getGrid().getSelectedRows();
selectedRows.forEach(function (selectedRow, i) {
 selectedEntityReferences.push(selectedRow.getData().getEntity().getEntityReference());
});

備註:

如需用來存取集合中資料的方法的資訊,請參閱 集合 (用戶端參考)

getTotalRecordCount

在 Web 應用程式或 Dynamics CRM for Outlook 用戶端,在連線至伺服器時,此方法傳回符合檢視表的篩選準則的記錄總數,不限於顯示在單一頁面的數目。

當 Dynamics CRM for Outlook 用戶端未連線至伺服器時,此數字受限於使用者選取要離線的記錄。

對於 平板電腦專用 Microsoft Dynamics CRM 和 手機專用 Microsoft Dynamics CRM,這個方法將會傳回子格的記錄數目。

**傳回值類型:**數字

範例: 設定 filteredRecordCount 變數為符合檢視表的篩選準則的記錄總數。

var filteredRecordCount = Xrm.Page.getControl("Contacts").getGrid().getTotalRecordCount();

GridRow

使用 **GridRow.**getData 方法存取 GridRowData。GridRow 集合是由 **Grid.**getRows 和 **Grid.**getSelectedRows 方法傳回。

getData

傳回 GridRow 的 GridRowData。

**傳回值類型:**GridRowData

範例:以連絡人子格中所有列的 GridRowData 填入 allGridRowDataArray 變數。

var allGridRowData = [];
var rows = Xrm.Page.getControl("Contacts").getGrid().getRows();
rows.forEach(function (row, i) {
 allGridRowData.push(row.getData());
});

GridRowData

使用 **GridRowData.**getEntity 方法存取 GridEntity。GridRowData 是由 **GridRow.**getData 方法傳回。

getEntity

傳回 GridRowData 的 GridEntity。

**傳回值類型:**GridEntity

範例:以連絡人子格中所有列的 GridEntity 填入 allGridEntitiesArray 變數。

var allGridEntities = [];
var rows = Xrm.Page.getControl("Contacts").getGrid().getRows();
rows.forEach(function (row, i) {
 allGridEntities.push(row.getData().getEntity());
});

GridEntity

使用 GridEntity 方式存取列中特定記錄的資料。GridEntity 是由 **GridRowData.**getEntity 方法傳回。

getEntityName

傳回列中記錄的邏輯名稱。

**傳回值類型:**字串

**範例:**設定 firstEntityType 變數為連絡人子格的第一列的實體邏輯名稱的值。

var firstEntityType = Xrm.Page.getControl("Contacts").getGrid().getRows().get(0).getData().getEntity().getEntityName();
// firstEntityType == "contact"

getEntityReference

**傳回值類型:**查詢

**範例:**設定 firstEntityType 變數為連絡人子格的第一列的實體參照。

var firstEntityReference = Xrm.Page.getControl("Contacts").getGrid().getRows().get(0).getData().getEntity().getEntityReference();
// firstEntityReference.entityType == "contact"
// firstEntityReference.id == "{13CD16BD-3EC4-E411-80CF-00155DB58496}"
// firstEntityReference.name == "Rene Valdes (sample)"

備註:

此查詢有下列屬性:

名稱

類型

描述

entityType

字串

列中記錄的邏輯名稱。 相同資料由 GridEntity.getEntityName 方法傳回。

id

字串

列中記錄的 id。 相同資料由 GridEntity.getId 方法傳回。

名稱

字串

列中記錄的主要屬性值。 相同資料由 GridEntity.getPrimaryAttributeValue 方法傳回。

getId

傳回列中記錄的 id。

**傳回值類型:**字串

**範例:**設定 firstEntityId 變數為連絡人子格的第一列的記錄 id 值。

var firstEntityId = Xrm.Page.getControl("Contacts").getGrid().getRows().get(0).getData().getEntity().getId();
// firstEntityId == "{13CD16BD-3EC4-E411-80CF-00155DB58496}"

getPrimaryAttributeValue

傳回列中記錄的主要屬性值。

**傳回值類型:**字串

範例: 設定 currentView 變數為連絡人子格的檢視表選取器的目前檢視表。

var firstEntityPrimaryAttributeValue = Xrm.Page.getControl("Contacts").getGrid().getRows().get(0).getData().getEntity().getPrimaryAttributeValue();
// firstEntityPrimaryAttributeValue == "Rene Valdes (sample)"

ViewSelector

使用 ViewSelector 方法取得或設定關於子格控制項檢視表選取器的資訊。

注意

如果尚未設定子格控制項顯示檢視表選取器,呼叫 ViewSelector 方法會擲回錯誤。

getCurrentView

使用此方法取得目前檢視表的參照。

**傳回值類型:**查詢物件

範例: 設定 currentView 變數為連絡人子格的檢視表選取器的目前檢視表。

var currentView = Xrm.Page.getControl("Contacts").getViewSelector().getCurrentView();

備註:

如果尚未設定子格控制項顯示檢視表選取器,在 GridControl.getViewSelector 方法所傳回的 ViewSelector 上呼叫此方法會擲回錯誤。

isVisible

使用此方法決定檢視表選取器是否可見。

**傳回值類型:**布林值

範例: 設定 viewSelectorIsVisible 變數代表連絡人子格的檢視表選取器的顯示性狀態。

var viewSelectorIsVisible = Xrm.Page.getControl("Contacts").getViewSelector().isVisible();

備註:

如果尚未設定子格控制項顯示檢視表選取器,在 GridControl.getViewSelector 所傳回的 ViewSelector 上呼叫此方法會擲回錯誤。

setCurrentView

使用此方法設定目前檢視表。

**參數類型:**查詢物件

範例: 設定 ContactsIFollow 變數為連絡人子格的目前檢視表。

var ContactsIFollow = {
 entityType: 1039, // SavedQuery
 id:"{3A282DA1-5D90-E011-95AE-00155D9CFA02}", 
 name: "Contacts I Follow"
}
//Set the view using ContactsIFollow
Xrm.Page.getControl("Contacts").getViewSelector().setCurrentView(ContactsIFollow);

備註:

如果尚未設定子格控制項顯示檢視表選取器,在 GridControl.getViewSelector 所傳回的 ViewSelector 上呼叫此方法會擲回錯誤。

此查詢有下列屬性:

名稱

類型

描述

entityType

編號

SavedQuery (1039) 或 UserQuery (4230) 的物件類型代碼,代表使用者可以選取的檢視表。

id

字串

使用者可以選取的檢視表的 id。

名稱

字串

使用者可以選取的檢視表名稱。

另請參閱

Microsoft Dynamics CRM Online 2015 Update 1 的新功能
撰寫子格的指令碼
Xrm.Page.ui 控制項 (用戶端參考)
集合 (用戶端參考)
用戶端程式設計參考
撰寫 Microsoft Dynamics CRM 2015 表單的程式碼
撰寫用戶端應用程式擴充功能

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