在 agresso 查询引擎中搜索

Search in agresso Query Engine

是否可以 search/filter 使用 Agresso 的 QueryEngineService 在列上?我一直在玩 SearchCriteria.SearchCriteriaPropertiesListTemplateResultOptions.Filter 但没有任何运气。我也找不到关于此事的任何文档。

QueryEngineService.TemplateList templateList = QueryEngineService.GetTemplateList(null, null, Credentials);

var template = templateList.TemplateHeaderList.FirstOrDefault(x => x.Name == strViewName);

if (template == null)    
    return null;                        

QueryEngineService.SearchCriteria searchProp = QueryEngineService.GetSearchCriteria(template.TemplateId, false, Credentials);                       

QueryEngineService.TemplateResultOptions options = QueryEngineService.GetTemplateResultOptions(Credentials);
options.RemoveHiddenColumns = true;       

QueryEngineService.InputForTemplateResult input = new QueryEngineService.InputForTemplateResult();
input.TemplateResultOptions = options;
input.TemplateId = template.TemplateId;            
input.SearchCriteriaPropertiesList = searchProp.SearchCriteriaPropertiesList;


QueryEngineService.TemplateResultAsDataSet result = QueryEngineService.GetTemplateResultAsDataSet(input, Credentials);

return result.TemplateResult;

你可以尝试从这个开始:

List<SearchCriteriaProperties> searchCriteriaProperties = searchCriteria.getSearchCriteriaPropertiesList().getSearchCriteriaProperties();

        SearchCriteriaProperties columnFilter = null;

        for (SearchCriteriaProperties criteria : searchCriteriaProperties) {


            if(criteria.getColumnName().equalsIgnoreCase("ColumnNameHere")) {

                columnFilter = criteria;
                columnFilter.setRestrictionType("=");
                columnFilter.setFromValue("valueToAssign");
            }
        }

下一步是使用 getSearchCriteriaProperties().add()

将 columnFilter 变量添加到 ArrayOfSearchCriteriaProperties() 对象的实例
ArrayOfSearchCriteriaProperties filter = new ArrayOfSearchCriteriaProperties();
        filter.getSearchCriteriaProperties().add(columnFilter);

您现在可以将过滤器对象添加到 InputForTemplateResult() 对象的实例中。

工作解决方案(对我来说)

QueryEngineService.SearchCriteria searchProp = QueryEngineService.GetSearchCriteria(template.TemplateId, false, Credentials);                       

foreach (QueryEngineService.SearchCriteriaProperties criteria in searchProp.SearchCriteriaPropertiesList)
{
    if(criteria.ColumnName.Equals("column_name", StringComparison.OrdinalIgnoreCase))
    {
        criteria.RestrictionType = "=";
        criteria.FromValue = "value";                        
    }
}    

//Rest of the code from question above