0

2 つの結合されたテーブルを使用して (.Net で) カスタム ルックアップを作成しようとしています。

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 の Name フィールドに関するエラーが表示されます (キーが見つかりません)。結合されたテーブルにルックアップ フィールドを追加する方法を知っている人はいますか?

結合が正常に機能し、結合されたテーブルの範囲を使用して他のルックアップを作成し (もちろん、2 番目のテーブルにルックアップ フィールドはありません)、正常に動作すると確信しています。

どんな助けでも大歓迎です!

4

1 に答える 1

1

これについては、次のブログ投稿で説明しています: http://palleagermark.blogspot.com/2009/12/data-set-lookups-on-enterprise-portal.html

答えは、1 つの DataSetView のみをサポートするように構築されており、複数ある場合はこの例外をスローするため、AxLookup コントロールとの結合でデータ ソースを使用できないということです。

于 2012-01-11T21:11:27.380 に答える