/// <summary> /// Initializes a new instance of the <see cref="Query"/> class. /// </summary> /// <param name="rootTreeItem"> /// The root tree item. /// </param> /// <param name="isForign"> /// if set to <c>true</c> [foreign root]. /// </param> public Query(QueryTreeItem rootTreeItem, bool isForign) { this.RootTreeItem = rootTreeItem; this.UseVirtualLinks = rootTreeItem.UseVirtualLinks; this.IgnoreLookupOnRoot = rootTreeItem.IgnoreLookupRows; this.sortFields = null; this.MaxResultRowCount = this.SkipResultRowCount = 0; this.crmDatabase = rootTreeItem.CrmDatabase; this.CollationName = null; this.foreignRoot = isForign; }
/// <summary> /// Adds the sort field. /// </summary> /// <param name="queryTreeItem"> /// The query tree item. /// </param> /// <param name="fieldId"> /// The field identifier. /// </param> /// <param name="descending"> /// if set to <c>true</c> [descending]. /// </param> public void AddSortField(QueryTreeItem queryTreeItem, int fieldId, bool descending) { var sortField = new QuerySortField(queryTreeItem, fieldId, descending); if (this.sortFields == null) { this.sortFields = new List <QuerySortField>(); } this.sortFields.Add(sortField); }
/// <summary> /// Initializes a new instance of the <see cref="QuerySortField"/> class. /// </summary> /// <param name="treeItem"> /// The tree item. /// </param> /// <param name="fieldIdentifier"> /// The field identifier. /// </param> /// <param name="isDescending"> /// if set to <c>true</c> [is descending]. /// </param> public QuerySortField(QueryTreeItem treeItem, int fieldIdentifier, bool isDescending) { this.queryTreeItem = treeItem; this.fieldId = fieldIdentifier; this.IsDescending = isDescending; this.freeColumnNames = true; var fieldInfo = this.queryTreeItem.GetFieldInfo(this.fieldId); if (fieldInfo == null) { return; } switch (fieldInfo.FieldType) { case 'K': case 'X': this.InitializeCatSorting(fieldInfo); break; } }
/// <summary> /// Addtoes the parent item CRM database options. /// </summary> /// <param name="parentItem"> /// The parent item. /// </param> /// <param name="crmDatabase"> /// The CRM database. /// </param> /// <param name="options"> /// The options. /// </param> /// <returns> /// The <see cref="QueryTreeItem"/>. /// </returns> public QueryTreeItem AddtoParentItemCrmDatabaseOptions(QueryTreeItem parentItem, CRMDatabase crmDatabase, int options) { if (!this._cdataInitialized) { this.InitCData(crmDatabase); } if (this._recordTemplate == null) { return(null); } var queryTreeItem = new QueryTreeItem((RecordTemplate)this._recordTemplate, this._linkId); if (this.IgnoreLookup) { queryTreeItem.SetIgnoreLookupRows(true); } this._queryTreeItem = queryTreeItem; if (this.Condition != null) { queryTreeItem.AddCondition(this.Condition.CreateQueryConditionOptions(crmDatabase, options)); } var count = this.subTables?.Count; for (int i = 0; i < count; i++) { this.subTables[i].AddtoParentItemCrmDatabaseOptions(this._queryTreeItem, crmDatabase, options); } parentItem?.AddSubNode(this.ParentRelation, queryTreeItem); return(queryTreeItem); }
/// <summary> /// Initializes a new instance of the <see cref="SubQuery"/> class. /// </summary> /// <param name="root"> /// The root. /// </param> /// <param name="parent"> /// The parent. /// </param> public SubQuery(QueryTreeItem root, QueryTreeItem parent) : base(root, true) { this.parent = parent; }
/// <summary> /// Adds the sub node. /// </summary> /// <param name="relation"> /// The relation. /// </param> /// <param name="subNode"> /// The sub node. /// </param> public void AddSubNode(string relation, QueryTreeItem subNode) { subNode.SetUseVirtualLinks(this.UseVirtualLinks); this.RootTreeItem.AddSubNode(relation, subNode); }