Exemplo n.º 1
0
        public void GetDisplayString()
        {
            MetaModel m     = Utils.CommonInitialize(true);
            var       route = RouteTable.Routes[0] as MyDynamicDataRoute;

            MetaTable t   = m.Tables[TestDataContext.TableFooWithDefaults];
            var       foo = new FooWithDefaults();

            Assert.AreEqual(String.Empty, t.GetDisplayString(null), "#A1");
            AssertExtensions.Throws <HttpException> (() => t.GetDisplayString(String.Empty), "#A2");
            Assert.AreEqual("hello", t.GetDisplayString(foo), "#A3");
            AssertExtensions.Throws <HttpException> (() => t.GetDisplayString("TestString"), "#A4");

            // The method looks at the entity type to see if it has an overriden ToString method,
            // it ignores such methods on the passed "row"
            var foo2 = new FooWithToString();

            Assert.AreEqual("hello", t.GetDisplayString(foo2), "#B1");

            t = m.Tables[TestDataContext.TableFooWithToString];
            Assert.AreEqual("ValueFrom_ToString", t.GetDisplayString(foo2), "#C1");

            // If we pass an object which is not of EntityType,
            // the method returns the result of row.ToString ()
            Assert.AreEqual(foo.GetType().ToString(), t.GetDisplayString(foo), "#C2");

            var foo3 = new FooNoDefaultsWithPrimaryKey();

            t = m.Tables[TestDataContext.TableFooNoDefaultsWithPrimaryKey];
            Assert.AreEqual(String.Empty, t.GetDisplayString(foo3), "#D1");
        }
Exemplo n.º 2
0
        private void BindToDataItem(object dataItem)
        {
            dataItem = Misc.GetRealDataItem(dataItem);
            Debug.Assert(dataItem != null, "DataItem is null");
            // Try to get the MetaTable from the type and if we can't find it then ---- up.
            MetaTable table = Misc.GetTableFromTypeHierarchy(dataItem.GetType());

            if (table == null)
            {
                throw new InvalidOperationException(String.Format(
                                                        CultureInfo.CurrentCulture,
                                                        DynamicDataResources.MetaModel_EntityTypeDoesNotBelongToModel,
                                                        dataItem.GetType().FullName));
            }

            string action = GetActionOrDefaultTo(PageAction.Details);

            NavigateUrl = table.GetActionPath(action, GetRouteValues(table, dataItem));

            if (String.IsNullOrEmpty(Text))
            {
                if (!String.IsNullOrEmpty(DataField))
                {
                    Text = DataBinder.GetPropertyValue(dataItem, DataField).ToString();
                }
                else
                {
                    Text = table.GetDisplayString(dataItem);
                }
            }
        }
Exemplo n.º 3
0
        public static void FillListItemCollection(System.Web.DynamicData.MetaTable table, ListItemCollection listItemCollection)
        {
            Func <object, object> func2      = null;
            IQueryable            query      = table.GetQuery();
            IEnumerable           enumerable = null;
            MetaColumn            sortColumn = table.SortColumn;

            if (sortColumn == null)
            {
                enumerable = query;
            }
            else if (sortColumn.IsCustomProperty)
            {
                IEnumerable <object> source = query.Cast <object>().AsEnumerable <object>();
                if (func2 == null)
                {
                    func2 = delegate(object row)
                    {
                        return(DataBinder.GetPropertyValue(row, sortColumn.Name));
                    };
                }
                Func <object, object> keySelector = func2;
                if (table.SortDescending)
                {
                    enumerable = source.OrderByDescending <object, object>(keySelector);
                }
                else
                {
                    enumerable = source.OrderBy <object, object>(keySelector);
                }
            }
            else
            {
                ParameterExpression expression  = Expression.Parameter(table.EntityType, "row");
                LambdaExpression    expression2 = null;
                if (sortColumn is MetaForeignKeyColumn)
                {
                    MetaColumn column = (sortColumn as MetaForeignKeyColumn).ParentTable.SortColumn;
                    expression2 = Expression.Lambda(Expression.Property(Expression.Property(expression, sortColumn.Name), column.Name), new ParameterExpression[] { expression });
                }
                else
                {
                    expression2 = Expression.Lambda(Expression.Property(expression, sortColumn.Name), new ParameterExpression[] { expression });
                }
                string methodName = table.SortDescending ? "OrderByDescending" : "OrderBy";
                MethodCallExpression expression3 = Expression.Call(typeof(Queryable), methodName, new Type[] { query.ElementType, expression2.Body.Type }, new Expression[] { query.Expression, expression2 });
                enumerable = query.Provider.CreateQuery(expression3);
            }
            foreach (object obj2 in enumerable)
            {
                string displayString    = table.GetDisplayString(obj2);
                string primaryKeyString = table.GetPrimaryKeyString(obj2);
                listItemCollection.Add(new ListItem(displayString, primaryKeyString.TrimEnd(new char[0])));
            }
        }
 private static string CreateAutoCompleteItem(MetaTable table, object row) {
     return AutoCompleteExtender.CreateAutoCompleteItem(table.GetDisplayString(row), table.GetPrimaryKeyString(row));
 }