网格(只读)对象和方法(客户端引用)

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

您可以设置当数据在子网格中加载时事件处理程序执行脚本。 这提供了更改选定视图和获取对网格中显示的数据的引用的方法。

在本主题中

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

  • 网格
    GridControl 返回的 Grid 的方法。getGrid 方法: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 返回的 ViewSelector 的方法。getViewSelector、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 方法访问有关网格中的数据的信息。GridGridControl.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。Grid. getRows 和 Grid. getSelectedRows 方法返回 GridRow 的集合。

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。GridRowDataGridRow.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 方法访问有关行中的特定记录的数据。GridEntityGridRowData.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)"

备注:

此查找具有以下属性:

客户

Type

说明

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);

备注:

如果未将子网格控件配置为显示视图选择器,则在 ViewSelector 上调用此方法会被 GridControl 返回。getViewSelector 会引发错误。

此查找具有以下属性:

客户

Type

说明

entityType

编号

表示用户可以选择的视图的 SavedQuery (1039) 或 UserQuery (4230) 的对象类型代码。

ID

字符串

用户可以选择的视图的 ID。

名称

字符串

用户可以选择的视图的名称。

另请参阅

编写子网格的脚本
Xrm.Page.ui 控制方法(客户端引用)
集合(客户端引用)
客户端编程引用
为 Microsoft Dynamics 365 窗体编写代码
在客户端上扩展 Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权