分享方式:


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

 

發佈日期: 2017年1月

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

您可以設定事件處理常式,在子格載入資料時執行指令碼。 這提供方法來變更所選的檢視表以及取得格線中顯示之資料的參照。

本主題內容

  • 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 函數新增至 Contacts 子格 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 變數為 Contacts 子格中 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 365 for Outlook 用戶端,在連線至伺服器時,此方法傳回符合檢視表的篩選準則的記錄總數,不限於顯示在單一頁面的數目。

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

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

傳回值類型: 數字

範例: 設定 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。

名稱

字串

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

另請參閱

撰寫子格的指令碼
Xrm.Page.ui 控制項 (用戶端參考)
集合 (用戶端參考)
用戶端程式設計參考
撰寫 Microsoft Dynamics 365 表單的程式碼
在用戶端上擴充 Microsoft Dynamics 365

Microsoft Dynamics 365

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