protected virtual SearchElement CreateSearchElement(SearchElement element, Schema.TableVar tableVar, string titleSeed, string pageType, bool isReadOnly) { MetaData metaData = null; if (tableVar.MetaData != null) { metaData = DerivationUtility.ExtractTags(tableVar.MetaData.Tags, "Search", pageType); } PrepareElement(element, metaData, tableVar.MetaData, titleSeed, pageType, isReadOnly); element.Hint = DerivationUtility.GetTag(metaData, "Hint", pageType, "Search for a specific row."); element.Properties.AddOrUpdate("Source", element.Source); return(element); }
public override Element Build() { SearchElement search = new SearchElement(String.Format("{0}Search", _derivationInfo.MainSourceName)); _rootElement = search; search.ElementType = DerivationUtility.GetTag(_derivationInfo.ElaboratedExpression.MainElaboratedTableVar.TableVar.MetaData, "Search.ElementType", _derivationInfo.PageType, "Search"); search.Source = _derivationInfo.MainSourceName; CreateSearchElement(search, _derivationInfo.ElaboratedExpression.MainElaboratedTableVar.TableVar, String.Empty, _derivationInfo.PageType, false); List <string> searchColumnNames = new List <string>(); SearchColumnElement searchColumn; foreach (Schema.Order order in _derivationInfo.TableVar.Orders) { if (Convert.ToBoolean(DerivationUtility.GetTag(order.MetaData, "Visible", _derivationInfo.PageType, "True"))) { foreach (Schema.OrderColumn orderColumn in order.Columns) { string orderColumnName = Schema.Object.Qualify(orderColumn.Column.Name, DerivationUtility.MainElaboratedTableName); if (!searchColumnNames.Contains(orderColumnName)) { try { searchColumnNames.Add(orderColumnName); searchColumn = new SearchColumnElement(String.Format("{0}SearchColumn{1}", _derivationInfo.MainSourceName, orderColumnName)); searchColumn.ColumnName = orderColumnName; searchColumn.ElementType = DerivationUtility.GetTag(orderColumn.Column.MetaData, "Search.ElementType", _derivationInfo.PageType, "SearchColumn"); CreateSearchColumnElement(searchColumn, orderColumn.Column, _derivationInfo.ElaboratedExpression.Columns[orderColumnName].GetTitleSeed(), _derivationInfo.PageType, false); search.Elements.Add(searchColumn); } catch (Exception E) { throw new ServerException(ServerException.Codes.CannotConstructSearchColumn, E, orderColumnName, order.Name); } } } } } foreach (Schema.Key key in _derivationInfo.TableVar.Keys) { foreach (Schema.TableVarColumn column in key.Columns) { string keyColumnName = Schema.Object.Qualify(column.Name, DerivationUtility.MainElaboratedTableName); if (!searchColumnNames.Contains(keyColumnName)) { try { searchColumnNames.Add(keyColumnName); searchColumn = new SearchColumnElement(String.Format("{0}SearchColumn{1}", _derivationInfo.MainSourceName, keyColumnName)); searchColumn.ColumnName = keyColumnName; searchColumn.ElementType = DerivationUtility.GetTag(column.MetaData, "Search.ElementType", _derivationInfo.PageType, "SearchColumn"); CreateSearchColumnElement(searchColumn, column, _derivationInfo.ElaboratedExpression.Columns[keyColumnName].GetTitleSeed(), _derivationInfo.PageType, false); search.Elements.Add(searchColumn); } catch (Exception E) { throw new ServerException(ServerException.Codes.CannotConstructSearchColumn, E, keyColumnName, key.Name); } } } } return(_rootElement); }