Exemple #1
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])));
            }
        }
Exemple #2
0
        public void GetPrimaryKeyString_Row()
        {
            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.GetPrimaryKeyString((object)null), "#A1");
            Assert.AreEqual("primary key value,456,True", t.GetPrimaryKeyString(foo), "#A2");

            var foo2 = new FooNoDefaultsWithPrimaryKey();

            AssertExtensions.Throws <HttpException> (() => t.GetPrimaryKeyString(foo2), "#B1");

            t = m.Tables[TestDataContext.TableFooSettableDefaults];
            var foo3 = new FooSettableDefaults(null, null, null);

            Assert.AreEqual(String.Empty, t.GetPrimaryKeyString(foo3), "#C1");

            foo3 = new FooSettableDefaults(null, String.Empty, null);
            Assert.AreEqual(",,", t.GetPrimaryKeyString(foo3), "#C2");

            foo3 = new FooSettableDefaults(String.Empty, null, null);
            Assert.AreEqual(",,", t.GetPrimaryKeyString(foo3), "#C2");
        }
 private static string CreateAutoCompleteItem(MetaTable table, object row) {
     return AutoCompleteExtender.CreateAutoCompleteItem(table.GetDisplayString(row), table.GetPrimaryKeyString(row));
 }
Exemple #4
0
        public void GetPrimaryKeyString_PrimaryKeyValues()
        {
            MetaModel m     = Utils.CommonInitialize(true);
            var       route = RouteTable.Routes[0] as MyDynamicDataRoute;

            MetaTable t      = m.Tables[TestDataContext.TableFooWithDefaults];
            var       values = new List <object> ();

            Assert.AreEqual(String.Empty, t.GetPrimaryKeyString((IList <object>)null), "#A1");
            Assert.AreEqual(String.Empty, t.GetPrimaryKeyString(values), "#A2");

            values.Add("string");
            Assert.AreEqual("string", t.GetPrimaryKeyString(values), "#B1");

            values.Add(123);
            Assert.AreEqual("string,123", t.GetPrimaryKeyString(values), "#B2");

            values.Add(false);
            Assert.AreEqual("string,123,False", t.GetPrimaryKeyString(values), "#B3");

            values.Add(true);
            Assert.AreEqual("string,123,False,True", t.GetPrimaryKeyString(values), "#B4");

            values.Clear();
            values.Add(false);
            values.Add("string");
            values.Add(123);

            Assert.AreEqual("False,string,123", t.GetPrimaryKeyString(values), "#C1");

            values.Add(null);
            Assert.AreEqual("False,string,123,", t.GetPrimaryKeyString(values), "#C2");

            values.Add(null);
            values.Add("another string");
            Assert.AreEqual("False,string,123,,,another string", t.GetPrimaryKeyString(values), "#C3");

            values.Clear();
            values.Add(null);
            Assert.AreEqual(String.Empty, t.GetPrimaryKeyString(values), "#D1");

            values.Add(null);
            Assert.AreEqual(String.Empty, t.GetPrimaryKeyString(values), "#D2");

            values.Add(String.Empty);
            Assert.AreEqual(",,", t.GetPrimaryKeyString(values), "#D3");

            values.Add(null);
            Assert.AreEqual(",,,", t.GetPrimaryKeyString(values), "#D4");
        }