Не получается динмически привязывать LookupControl к разным LookupDatasetам. Если у этого контрола, точнее у датасетлинка датасет не указан, после открытия окна какой не укажешь в lookupcontrolе ничгео не открывается, если он задан как SimpleSelect то ругается что не определён набор данных справочника.
Если же заранее указать хоть какой нибудь датасет у линка, то lookupcontrol будет показывать значения из этого спраовчника и игнорирует что у датасетлинка указан уже другой датасет.
Сборка 3.2.0.49
Подскажите пожалуйста это как нибудь лечится? или получается нельзя динамически привязывать lookupcontrol к разным справочникам?
Нравится
Пока нашел такой вариант решения:
для нужного LookupControl перехватываем событие OnPrepareSelectWindow и правим необходимые атрибуты окна SelectWindow, которые как показал разбор заполняются постоянно значениями устанавливаемыми видимо при открытии окна, которые соответствуют выбору через SelectWindow из датасета который указан изначально для этого LookupControlа.
Правда при этом есть неудобство, LookupControl.Text сам не заполнятеся, приходится при необъходимости брать его из PrimaryDisplayDataField датасета, хотя на форме выбранное значение отображается нормально, странно одним словом.
И тоже самое при начальной установки значения LookupControlа, не заполняется Text, выуживаем опять же из PrimaryDisplayDataField, предварительно сделав Locate.
Может есть более изящное решение, но я его не знаю :)
Да, Вы правы. Всё неочевидно. После смены датасета у соответствующего датасетлинка еще нужно обнулить и снова присвоить свойство LookupDatasetLink у самого контрола.
function ChangeLookupDataset(Control) { var DatasetUSI = Control.Tag; dlData.Dataset = Services.GetNewItemByUSI(DatasetUSI); LookupControl.LookupDatasetLink = System.EmptyValue; LookupControl.LookupDatasetLink = dlData; }
Прикрепляю свой тестовый пример.