CRM 9 - 根据来自 JS 的记录动态绑定 HTML Table/Grid
CRM 9 - Bind HTML Table/Grid dynamically based on records from JS
我正在 Dynamics CRM 9.0 中开发 HTML 页面。我写了一个 Webresource JavaScript,我通过 HTML 页面调用了它。
我的 JavaScript 中有一个函数可以从 CRM 实体中获取数据,如下所示,
var Query = "$select=ParameterValue,transactioncode,ParameterName&$filter= PhonceCallId/Id eq(guid'" + phoneid + "')";
XrmSvcToolkit.retrieveMultiple({
entityName: entity ,
odataQuery: Query,
async: false,
successCallback: successCallback,
errorCallback: errorCallback
});
现在,针对 PhoneCallId,我正在检索记录,请注意,记录本质上是动态的,这意味着针对每次命中提取的行数不固定(我可能第一次获得 3 行,之后获得 5 行下次等等)。
我想将这些记录动态绑定到我的 HTML 页面中,就像一个具有 header 列的 gridview,然后这些记录将在运行时绑定到该 gridview。
您可以通过不同的方式实现这一点。
例如,这是我的 Fiddle 之一,它使用 KnockoutJS 来填充数据。在此 fiddle 中,为了解释,数据是静态的,可以从 CRM 动态填充,您可以显示曾经希望每页显示多少行。
下面的代码只是参考 Fiddle
基本上下面的代码是您将数据从 CRM 获取到本地数组所需的代码
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/accounts?$select=accountnumber,emailaddress1,name&$filter=accountid ne null", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
var tempArray = new array();
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
for (var i = 0; i < results.value.length; i++) {
var accountnumber = results.value[i]["accountnumber"];
var emailaddress1 = results.value[i]["emailaddress1"];
var name = results.value[i]["name"];
tempArray.push(results.value[i]["accountnumber"],results.value[i]["emailaddress1"],results.value[i]["name"]);
}
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
正常HTMLTable添加数据。 Link供参考
我正在 Dynamics CRM 9.0 中开发 HTML 页面。我写了一个 Webresource JavaScript,我通过 HTML 页面调用了它。 我的 JavaScript 中有一个函数可以从 CRM 实体中获取数据,如下所示,
var Query = "$select=ParameterValue,transactioncode,ParameterName&$filter= PhonceCallId/Id eq(guid'" + phoneid + "')";
XrmSvcToolkit.retrieveMultiple({
entityName: entity ,
odataQuery: Query,
async: false,
successCallback: successCallback,
errorCallback: errorCallback
});
现在,针对 PhoneCallId,我正在检索记录,请注意,记录本质上是动态的,这意味着针对每次命中提取的行数不固定(我可能第一次获得 3 行,之后获得 5 行下次等等)。
我想将这些记录动态绑定到我的 HTML 页面中,就像一个具有 header 列的 gridview,然后这些记录将在运行时绑定到该 gridview。
您可以通过不同的方式实现这一点。 例如,这是我的 Fiddle 之一,它使用 KnockoutJS 来填充数据。在此 fiddle 中,为了解释,数据是静态的,可以从 CRM 动态填充,您可以显示曾经希望每页显示多少行。 下面的代码只是参考 Fiddle
基本上下面的代码是您将数据从 CRM 获取到本地数组所需的代码
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/accounts?$select=accountnumber,emailaddress1,name&$filter=accountid ne null", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
var tempArray = new array();
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
for (var i = 0; i < results.value.length; i++) {
var accountnumber = results.value[i]["accountnumber"];
var emailaddress1 = results.value[i]["emailaddress1"];
var name = results.value[i]["name"];
tempArray.push(results.value[i]["accountnumber"],results.value[i]["emailaddress1"],results.value[i]["name"]);
}
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
正常HTMLTable添加数据。 Link供参考