#dynamics-crm #xrm
#dynamics-crm #xrm
Вопрос:
Есть ли способ включить скрытый столбец в xrm grid / view?
Допустим, я сохранил определение запроса следующим образом:
<savedquery>
<savedqueryid>{...}</savedqueryid>
<layoutxml>
<grid name="resultset" jump="name" select="1" icon="1" preview="1">
<row name="result" id="entityid">
<cell name="name" width="200" />
<cell name="statuscode" width="100" />
</row>
</grid>
</layoutxml>
<querytype>0</querytype>
<fetchxml>
<fetch version="1.0" output-format="xml-platform" mapping="logical">
<entity name="entity">
<attribute name="name" />
<attribute name="statuscode" />
</entity>
</fetch>
</fetchxml>
</savedquery>
Мне нужно, чтобы столбец в сетке был доступен через клиентский API, поскольку он управляет логикой ленты
var allSelectedRows = gridContext.getGrid().getSelectedRows().forEach((row) => {
// this doesn't work if grid doesn't contain statuscode column
let status = row.data.entity.attributes.get("statuscode");
});
Фактически не отображая столбец в пользовательском интерфейсе.
Ответ №1:
К сожалению, технически это невозможно. Поскольку нет свойства для установки скрытых столбцов, также не рекомендуется выполнять / читать доступ к неподдерживаемым элементам DOM.
Вы можете использовать SelectedControlSelectedItemIds
для передачи в качестве параметра пользовательскому JavaScript, а затем вы можете извлечь необходимый столбец, например, statuscode
, с сервера для выполнения проверки.
Комментарии:
1. learn.microsoft.com/en-us/dynamics365/customer-engagement/…
2. Это, конечно, работает, но это проблематично (отчасти), поскольку ribbon работает только синхронно, поэтому единственный способ — показать что-то по умолчанию, запросить выборку, а затем принудительно обновить-ribbon — не совсем элегантно.
3. @OndrejSvejdar вероятно, вы можете отправить эту идею в MS .. например, предоставить возможность добавлять скрытые столбцы в gridview