예제 #1
0
        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);
        }
예제 #2
0
        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);
        }