AX2009 EP Пользовательский поиск с объединенными таблицами - PullRequest
0 голосов
/ 11 января 2011

Я пытаюсь сделать пользовательский поиск (в .Net), используя 2 соединенные таблицы:

AxLookup nameLookup = e.LookupControl;
Proxy.QueryBuildDataSource emplTable = null;
Proxy.QueryBuildDataSource dirPartyTable = null;

using (Proxy.SysDataSetBuilder sysDataSetBuilder = proxy.SysDataSetBuilder.constructLookupDataSet(this.AxSession.AxaptaAdapter, TableMetadata.TableNum(this.AxSession, "EmplTable")))
{
    nameLookup.LookupDataSet = new DataSet(this.AxSession, sysDataSetBuilder.toDataSet());        
}

using (Proxy.Query query = nameLookup.LookupDataSet.DataSetViews[0].MasterDataSource.query())
{
    emplTable = query.dataSourceNo(1);
    dirPartyTable = emplTable.addDataSource(TableMetadata.TableNum(this.AxSession, "DirPartyTable"));
    dirPartyTable.clearLinks();
    dirPartyTable.addLink(TableDataFieldMetadata.FieldNum(this.AxSession, "EmplTable", "PartyId"), TableDataFieldMetadata.FieldNum(this.AxSession, "DirPartyTable", "PartyId"));                
    dirPartyTable.joinMode = 6;  //should be an exists join
}

nameLookup.LookupDataSet.Init();


nameLookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, nameLookup.LookupDataSetViewMetadata.ViewFields["EmplId"]));
nameLookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, nameLookup.LookupDataSetViewMetadata.ViewFields["DirPartyTable!Name"])); //not working!!

nameLookup.SelectField = "EmplId";

Теперь, когда я использую поиск, он дает мне ошибку о поле имени в DirPartyTable (ключ ненайдено) Кто-нибудь знает, как добавить поле поиска в объединенную таблицу?

Я уверен, что объединение работает нормально, сделал несколько других поисков с диапазонами в объединенной таблице (и, конечно, нет полей поиска во второй таблице)и это работает хорошо.

Любая помощь приветствуется!

1 Ответ

1 голос
/ 12 января 2012

Это обсуждалось в следующем сообщении в блоге: http://palleagermark.blogspot.com/2009/12/data-set-lookups-on-enterprise-portal.html

Ответ заключается в том, что вы не можете использовать источник данных с объединением с элементом управления AxLookup, так как он создан для поддержки только одного DataSetView и выдает это исключение, если у вас их больше одного.

...