Это один сводит меня с умом ....CRM 2011: Найти текущую сетку в ленте JavaScript
У меня есть несколько подсетей в форме, все же сущность и фильтруют в различные областях. Кнопка в ленте сетки вызывает функцию, которая должна знать точную сетку «экземпляр», чтобы принять решение, и вот где я полностью потерян.
В определении моей ленты я передаю CrmParameter SelectedControl вызываемой функции. Предполагается, что это активная сетка - и, по-видимому, она, по крайней мере, по крайней мере.
Что бы я хотел сделать в своем JavaScript-коде, я получаю одну из своих сеток через свое имя, а затем сравниваю его с объектом, который передан в мою функцию, - только это совсем другой объект, и вы можете сделать следующее ни с чем. Вы не можете получить свое имя, идентификатор, ярлык; всех методов, перечисленных для элементов управления в SDK, работают только четыре: getVisible(), setVisible(), setFocus() и refresh(). Это не очень полезно для того, что мне нужно делать.
Затем коллега сказал мне попробовать Xrm.Page.ui.getCurrentControl() - но это показывает то же самое поведение, хотя смешно оба объекта не равны.
Я нашел что-то неопределенное в Google, которое использовало свойство .control элемента управления, полученного через .getControl(), поэтому я сравнил тот, который получен с помощью .getCurrentControl(), с этим - и они совпали. К сожалению, «текущий контроль» соответствует свойствам управления. все субгриды.
Некоторый код, чтобы сделать его более ясным, что это то, что:
function ribbonAction(param) // param is the SelectedControl parameter
{
var current = Xrm.Page.ui.getCurrentControl();
var grid1 = Xrm.Page.getControl("grid1");
var grid2 = Xrm.Page.getControl("grid2");
alert(param == current); // false
alert(param == grid1); // false
alert(param == grid1.control); // false
alert(current == grid1); // false
alert(current == grid1.control); // true
alert(current == grid2.control); // true
alert(current.getName()); // throws an error
alert(param.getName()); // throws an error
current.refresh(); // refreshes the correct grid
param.refresh(); // refreshes the correct grid
}
Комментарии сказать, что происходит, когда кнопка ленты нажата в то время как СЕТКА1 активен.
Я был бы очень признателен за любые подсказки о том, как реально идентифицировать активный элемент управления подсетей в этой ситуации.
Это нормально, что вы установили grid2 с помощью элемента управления «grid1»? Это объясняет, что оно также возвращает true для 6-го выражения. –
Нет, это только что произошло от копирования этой строки; это всего лишь примерный код для подведения итогов всех моих наблюдений, у моих реальных элементов управления есть разные имена, которые не так легко перепутаны.Спасибо, что указали на эту опечатку. – TeaDrivenDev