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]))); } }
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)); }
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"); }