|
17.04.2007, 11:47 | #1 |
MCTS
|
DataSource на Web-форме (DAX 4.0)
Доброе время суток!
Пытаюсь связать два датасурса на Web-форме и вывести поле из подчиненного датасурса. Пример: связываю таблицу деловых отношений (smmBusRelTable) и сотрудников (EmplTable), чтобы показать фамилию/имя ответственного за компанию. Однако в WebGrid в данном поле (имя сотрудника) во всех строках отображается первое выбранное значение из датасурса EmplTable, т.е. значение почему-то не обновляется после первой строки. Если повесить произвольный display-метод (просто возвращающий пустое значение) на какое-либо поле WebGrid, то значение поля "Имя сотрудника" отображается корректно (происходит обновление), правда, кроме первой строки WebGrid. Ax 4.0, SP1; SQL Server 2005; WSS 3.0. Спасибо заранее за участие! |
|
17.04.2007, 13:32 | #2 |
Member
|
Какой вы тип JOIN поставили?
__________________
С уважением, glibs® |
|
17.04.2007, 16:16 | #3 |
MCTS
|
Вообще InnerJoin, пробовал OuterJoin и ExistsJoin - в последнем случае отображается пустое значение. Пытался связать датасурсы программно - результат не поменялся.
|
|
17.04.2007, 16:33 | #4 |
Microsoft Dynamics
|
А что выдается в квери датасорса? какой селект?
Вы пробовали то же самое делать в обыкновенной форме? А с дисплей и едит методами - это действительно лажа, и не только в отображении первой записи |
|
17.04.2007, 18:38 | #5 |
MCTS
|
Select проверял, вроде все правильно
Код: SELECT * FROM smmBusRelTable JOIN * FROM EmplTable WHERE smmBusRelTable.MainContact = EmplTable.EmplId |
|
18.04.2007, 01:49 | #6 |
Member
|
Проверил в 3.0 (до портала на 4.0 нет времени добраться).
Правда, использовал PurchTable и EmplTable. Работает InnerJoin. Active, по-моему, не должен (не проверял, но в GUI по-моему не работало). У вас связь между таблицами прописана (в АОТ или вручную на форме)? PS. Уже вижу, прописан. В общем, проверьте ваши настройки на форме. Скорее всего должно работать (раз в 3.0 работает). Как до портала на четверке доберусь — отпишу.
__________________
С уважением, glibs® Последний раз редактировалось glibs; 18.04.2007 в 01:52. |
|
18.04.2007, 11:37 | #7 |
Microsoft Dynamics
|
Могу высказать дурацкое предположение (не бейте): может вы код не рефрешите после изменений в коде?
|
|
18.04.2007, 14:28 | #8 |
MCTS
|
К сожалению, код точно рефрешится ...
|
|
19.04.2007, 10:08 | #9 |
MCTS
|
glibs
Еще раз попробовал в 3.0 создать аналогичную форму - все отлично работает. В любом случае спасибо всем за участие! Если вдруг еще мысли появятся - просьба написать. |
|
25.04.2007, 16:29 | #10 |
MCTS
|
Up на всякий случай - вдруг что-нибудь новое подскажут...
|
|
25.04.2007, 19:05 | #11 |
Microsoft Dynamics
|
Сорри, нету машинки с порталом, чтобы проверить.
Но я попробовала в клиенте и все работает, просто сделала smmBusRelTable джойн сорсом у EmplTable. ДелейАктив тут не должен никак повлиять, только в случае если у вас медленная машина, потому что он просто вставляет задержку отображения записи в подчиненном датасорсе. Сначала мне показалось, что у меня та же проблема - "во всех строках отображается первое выбранное значение из датасурса EmplTable". Но потом я обратила внимание, что поле, по которому таблички связаны, и содержит это первое значение из ЕмплТейбл (если у вас стндртная демодата, то первых 15 бизнес аккаунтов будет иметь МаinContact - AJE, что и есть первая запись в табличке). На веб-форме вы могли не заметить этого, потому что там ограничение на вывод 10 записей, потом нужно прощелкать некст. Проверьте, пожалуйста, данные и напишите. |
|
|
За это сообщение автора поблагодарили: Link (1). |
26.04.2007, 10:17 | #12 |
MCTS
|
Мариночка
Благодарю за участие. В клиенте действительно все работает на раз, почему сначала не получилось - мне сейчас непонятно. Теперь пробую создать в клиенте новую форму с двумя датасурсами, у второго указываю родительский сурс и меняю связь на InnerJoin - все отлично срабатывает. В портале проверяю правильность по коду сотрудника, пролистываю много записей - код по строкам меняется, название (ФИО) остается от первой записи. Вообще, грешу на класс WebFormHtml (такое ощущение, при обращении к датасурсам данные извлекаются только из первого на форме), однако точно пока в алгоритме разобраться не удалось. |
|
27.04.2007, 00:10 | #13 |
Member
|
У меня в 4.0 тоже не работает .
Display-методы Микрософт пока не сломал Пользуйтесь ими Пользуясь случаем хочется сказать — ну и гадость же этот портал на Шарапоинте. Нет чтобы портал от 3.0 до ума довести...
__________________
С уважением, glibs® |
|
27.04.2007, 13:17 | #14 |
MCTS
|
glibs
Спасибо, однако с display-методами возникает проблема из моего первого поста: при переходе навигационными клавишами по WebGrid (следующий/предыдущий) первая запись никогда не обновляется. Пример: первая запись выводит данные о клиенте с ответственным Иванов, в следующих записях ответственные все различные. Однако при переходе на следующие 10 записей первая строка сверху никогда не обновляется - всегда остается Иванов. Display-метод так отрабатывает и когда он определен в таблице, и в датасурсе. |
|
27.04.2007, 14:14 | #15 |
Member
|
Display-метод у меня вчера работал корректно. Правда, я только 3 записи ввел. Вы точно все корректно настроили?
__________________
С уважением, glibs® |
|
27.04.2007, 15:09 | #16 |
MCTS
|
Вроде да. Если не затруднит, попробуйте ввести больше десяти записей (или у грида поставьте свойство VisibleRows какое-нибудь малое значение - 2 например), а также ShowNavigationButtons = Yes. В случае 3-х записей в выборке и 2 выводимых на страницу строках у меня 2 первые показываются нормально. Когда происходит переход навигационной кнопкой Next на следующую запись, дисплейное поле в первой показываемой строке отображается неверно.
|
|
27.04.2007, 15:35 | #17 |
MCTS
|
Вот пример. На первом рисунке выводятся две записи, где Наименование ДО - дисплейное поле. Далее нажимается кнопка next (выделено 1)
Получаем следующие 2 записи, у первой дисплейное поле отображает неверное значение (выделено), которое на самом деле является самым значением из самой первой записи в выборке. Оно же будет повторяться в первой строке и при следующем переходе. |
|
27.04.2007, 21:50 | #18 |
Member
|
Да, проблема с некорректным отображением display-методов при листании страниц действительно наблюдается. При этом display-метод некорректно отрабатывает только для первой строчки грида на следующей странице. Для всех последующих записей он отрабатывает корректно.
Блин! Ну надо же куда мир катится! Нет чтобы что-то хорошее сделать. Например, вьюхи отремонтировать. Тот же код портала рефакторить, чтобы проверку по бэст практису от него не тошнило. Так они то что раньше работало продолжают доламывать. И интегрировать со всякой гадостью. Вчера не в офисе на рабочей машине пытался разобраться в функциональности. Потребовалось переключиться на английский интерфейс, чтобы хоть что-то понять... И знаете чего? Без контролера домена войти в систему можно, но язык интерфейса вы уже не поменяете .
__________________
С уважением, glibs® |
|
02.05.2007, 18:14 | #19 |
MCTS
|
Удалось добиться некоторых положительных итогов в вопросе, в частности, наладить работу связанных датасурсов на Web-форме.
В результате испытаний выяснилось, что некорректно отображаются значения контролов на WebGrid, связанных с подчиненным родительскому датаусурсом, имеющих вид WebEdit и WebCheckBox. При этом значения контролов с видом WebComboBox, WebDate, WebInteger и WebReal отображаются правильно! Как вариант решения, в методе layoutEdit класса WebFormHtml были исправлена строка X++: controlText = fwe.text(); X++: Common common1;
...........................
if (fwe.dataSource() && fwe.dataField())
{
common1 = _webrun.dataSourceById(fwe.dataSource()).cursor();
controlText = common1.(fwe.dataField());
}
else
{
controlText = fwe.text();
} Аналогичным подходом был исправлен метод layoutCheckBox. |
|
|
За это сообщение автора поблагодарили: glibs (8). |
04.05.2007, 13:20 | #20 |
Microsoft Dynamics
|
Супир! Если после проверок будет работать классно, предложим ЕП-команде исправить в 4.1!
|
|
Теги |
ax3.0, ax4.0 |
|
|