Получить все рекомендуемые бизнесом поля в подсетке - PullRequest
0 голосов
/ 21 октября 2019

Как проверить, является ли конкретное поле или столбец подсетки бизнес-рекомендацией или нет? Я хочу сделать это с помощью веб-ресурса. Также из-за некоторых требований мне придется использовать контекст выполнения формы, в которой присутствует подсетка, а не самой подсетки.

1 Ответ

0 голосов
/ 25 октября 2019

Это немного сложно, потому что во время загрузки формы подсетка не имеет данных. Таким образом, вы должны использовать событие формы load, чтобы прикрепить событие load к подсетке.

Это описано на этой странице MS Docs . Вы можете сделать это следующим образом:

function attachGridEvent(executionContext)
{
  var formContext = executionContext.getFormContext();
  var gridContext = formContext.getControl("gridCategories");

  // We have the grid, now add a "load" event handler
  gridContext.addOnLoad(MyGridLoadedEvent);
}

Теперь у вас есть событие 'load' для вашей сетки, так что вы можете перебирать ее строки и просматривать данные

Я не смог заставить это работать для подсетей, которые не содержат данных

Я получаю первый row во вспомогательной сетке. Как только у меня будет это, мы сможем пройтись по каждой строке attributes. Каждый атрибут имеет следующие методы:

getName Возвращает логическое имя атрибута выбранной строки сетки.

getRequiredLevel Возвращает строковое значение, указывающее, является ли значение для атрибута обязательным или рекомендуемым.

setRequiredLevel Устанавливает, требуются ли данные или рекомендуется дляатрибут выбранной строки сетки перед сохранением записи.

getValue Извлекает значение данных для атрибута.

setValue Устанавливает значение данных для атрибута.

Страница MS Docs

Я использую некоторыесовременные функции браузера (map, =>), но этот код должен работать для вас

function MyGridLoadedEvent(evt)
{
  var gridContext = evt.getEventSource();
  var rows = gridContext.getGrid().getRows();

  if (rows.getLength() > 0)
  {
    let rowAttributes = rows.getByIndex(0).getAttribute();
    let mappedResults = rowAttributes.map(x => x.getName() + " : " + x.getRequiredLevel());

    alert(mappedResults);
  }
}
...