网格(只读)对象和方法(客户端引用)
发布日期: 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 方法访问有关网格中的数据的信息。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。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。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)"
备注:
此查找具有以下属性:
客户 |
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。 保留所有权利。 版权