Этот сводит меня с ума ....
У меня есть несколько подсеток в форме, все одного и того же объекта и отфильтрованы по разным полям.Кнопка на ленте сетки вызывает функцию, которая должна знать точный «экземпляр» сетки, чтобы принять решение - и именно здесь я полностью теряюсь.
В своем определении ленты я передаю CrmParameter SelectedControlвызываемая функция.Предполагается, что это активная сетка - и это, по крайней мере, в некотором смысле.
Что я хотел бы сделать в своем коде JavaScript, так это получить одну из моих сеток через ее имя и затем сравнить ее собъект, который передается в мою функцию - только то, что это какой-то совершенно другой объект, и вы ничего не можете с ним поделать.Вы не можете получить его имя, удостоверение личности, ярлык, что угодно;из всех методов, перечисленных для элементов управления в SDK, работают только четыре: getVisible (), setVisible (), setFocus () и refresh ().Они не очень полезны для того, что мне нужно сделать.
Затем мой коллега сказал мне попробовать Xrm.Page.ui.getCurrentControl () - но это показывает точно такое же поведение, хотя, как ни странно, два объекта не 't даже равно.
Я обнаружил что-то неопределенное в Google, в котором использовалось свойство .control элемента управления, полученного с помощью .getControl (), поэтому я сравнил тот, полученный с помощью .getCurrentControl (), - и они совпали.К сожалению, «текущий элемент управления» совпадает со свойствами .control всех подсетей.
Некоторый код, чтобы было понятнее, что к чему:
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
}
Комментарии говорятчто происходит при нажатии кнопки ленты, когда активна grid1.
Буду очень признателен за любые подсказки о том, как действительно идентифицировать активный элемент управления подсетью в этой ситуации.