#javascript #html #dynamics-crm #dynamics-crm-2016
#javascript #HTML #динамика-crm #динамика-crm-2016
Вопрос:
Я работаю над HTML-страницей внутри Dynamics CRM 9.0. Я написал JavaScript с веб-ресурсом, который я вызвал через HTML-страницу. В моем JavaScript есть функция, которая извлекает данные из объекта CRM, как показано ниже,
var Query = "$select=ParameterValue,transactioncode,ParameterNameamp;$filter= PhonceCallId/Id eq(guid'" phoneid "')";
XrmSvcToolkit.retrieveMultiple({
entityName: entity ,
odataQuery: Query,
async: false,
successCallback: successCallback,
errorCallback: errorCallback
});
Теперь, по отношению к PhoneCallId, я извлекаю записи и, пожалуйста, обратите внимание, что записи являются динамическими по своей природе, что означает, что количество строк, извлекаемых при каждом попадании, не является фиксированным (я могу получить 3 строки в первый раз, 5 строк в следующий раз и так далее).
Я хочу динамически привязывать эти записи к моей HTML-странице, например, к gridview, в котором будут столбцы заголовка, а затем записи будут привязаны во время выполнения к этому gridview.
Ответ №1:
Этого можно добиться разными способами. Например, вот одна из моих скрипок с использованием KnockoutJS, которая заполняет данные. В этой скрипке данные являются статическими для объяснения, и их можно динамически заполнять из CRM, и вы можете показать, сколько строк нужно отображать на странице. Приведенный ниже код — это просто ссылка на скрипку
В основном приведенный ниже код — это то, что вам нужно для получения данных из CRM в ваш локальный массив
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() "/api/data/v9.1/accounts?$select=accountnumber,emailaddress1,nameamp;$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();
Обычная таблица HTML, добавляющая данные. Ссылка для справки
Комментарии:
1. Уважаемый @AnkUser. Спасибо за ваш ответ, но я получаю данные внутри переменной responseData и не хочу разбивки на страницы. Итак, как я могу этого добиться?
2. Вот еще один базовый HTML-пример создания таблицы Dynamics jsfiddle.net/JSFiddleChamp/ycfdL3oe/2 В Array вы можете добавить свои данные, поступающие из RetreiveMultiple, а затем просто перебирать массив и отображать данные. Это заставит вас работать. Если это поможет вам продвинуться вперед, пожалуйста, отметьте это как решенное.
3. Когда я пытаюсь получить доступ к моим responseData, например, к responseData[0] [0] . Это выдает мне неопределенную ошибку, тогда как когда я запрашиваю вот так responseData[0][«Значение параметра»], он выдает мне значение параметра с 0-м индексом
4. Вы путаете значение, поступающее из Crm в объект массива JavaScript. Что вам нужно сделать, это создать переменную массива, одну за другой вставляя ваше значение из данных ответа в массив. Затем у вас есть объект массива (локальный) со всеми данными из Crm, а затем отображение значения из массива в таблицу.
5. Спасибо за ваш ответ. Не могли бы вы показать мне пример того, как я могу это сделать?