Enterprise portal lookup

This is my lookup on enterprise portal.

I want to add one more condition, how to do it?

protected void CategoryLookup_Lookup(object sender, AxLookupEventArgs e)

{

string costType = itemHeader.GetField(“CostType”).ToString();

string payMethod = itemHeader.GetField(“PayMethod”).ToString();

AxLookup lookup = e.LookupControl; using (Proxy.SysDataSetBuilder sysDataSetBuilder = Proxy.SysDataSetBuilder.constructLookupDataSet(this.AxSession.AxaptaAdapter,

TableMetadata.TableNum(this.AxSession, “TrvExpSubCategoriesView”)))

{

lookup.LookupDataSet = new Microsoft.Dynamics.AX.Framework.Portal.Data.DataSet(this.AxSession, sysDataSetBuilder.toDataSet());

using (Proxy.QueryBuildDataSource qb = lookup.LookupDataSet.DataSetViews[0].MasterDataSource.query().dataSourceNo(1))

{

using (Proxy.QueryBuildRange expTypeRange = qb.addRange(TableDataFieldMetadata.FieldNum(“TrvExpSubCategoriesView”, “CostType”)))

{

expTypeRange.value = costType;

expTypeRange.status = (int)Proxy.RangeStatus.Hidden;

}

qb.addSortField(TableDataFieldMetadata.FieldNum(“TrvExpSubCategoriesView”, “DisplayOrder”), Proxy.SortOrder.Descending);

}

}

lookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, lookup.LookupDataSetViewMetadata.ViewFields[“Name”])); lookup.Fields[0].HeaderText = Labels.GetLabel("@SYS50039"); lookup.Fields[0].SortExpression = “Name”; lookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, lookup.LookupDataSetViewMetadata.ViewFields[“Description”])); lookup.Fields[1].HeaderText = Labels.GetLabel("@SYS101400"); lookup.Fields[1].SortExpression = “Description”; lookup.SelectField = “Name”;

} #endregion

Wouldn’t using dataSetLookup() be much easier? You can see an example in Dynamics AX 2012 Enterprise Portal: range on dataSetLookup() on the AX Support team blog.