Beispiel #1
0
        public static void RegisterInsertDefaults(IDynamicDataSource dataSource, DetailsView detailsView, bool hideDefaults)
        {
            RequestContext requestContext = DynamicDataRouteHandler.GetRequestContext(HttpContext.Current);
            MetaTable      table          = dataSource.GetTable();

            if (hideDefaults)
            {
                var fieldGenerator = detailsView.RowsGenerator as AdvancedFieldGenerator;
                if (fieldGenerator != null)
                {
                    fieldGenerator.SkipList.AddRange(BuildSkipList(table, requestContext.RouteData.Values));
                }
                else
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, "Expected a field generator of type {0}", typeof(AdvancedFieldGenerator).FullName));
                }

                detailsView.ItemInserting += delegate(object sender, DetailsViewInsertEventArgs e) {
                    SetDefaultInsertValues(table, requestContext.RouteData.Values, e.Values);
                };
            }
            else
            {
                detailsView.DataBound += delegate(object sender, EventArgs e) {
                    //In the seperate page version we pull the values from the querystring via routing
                    SetDefaultInsertControlValues(table, detailsView, requestContext.RouteData.Values);
                };
            }
        }
Beispiel #2
0
        internal IDictionary <string, object> GetColumnValuesFromRoute(HttpContextBase context)
        {
            RouteValueDictionary        values      = DynamicDataRouteHandler.GetRequestContext(context).RouteData.Values;
            Dictionary <string, object> dictionary2 = new Dictionary <string, object>();

            foreach (MetaColumn column in this.Columns)
            {
                if (Misc.IsColumnInDictionary(column, values))
                {
                    MetaForeignKeyColumn column2 = column as MetaForeignKeyColumn;
                    if (column2 != null)
                    {
                        foreach (string str in column2.ForeignKeyNames)
                        {
                            dictionary2[str] = values[str];
                        }
                    }
                    else
                    {
                        dictionary2[column.Name] = Misc.ChangeType(values[column.Name], column.ColumnType);
                    }
                }
            }
            return(dictionary2);
        }
Beispiel #3
0
        public static string GetRouteValue(string key)
        {
            object obj2;

            if (!DynamicDataRouteHandler.GetRequestContext(HttpContext.Current).RouteData.Values.TryGetValue(key, out obj2))
            {
                return(null);
            }
            return(obj2 as string);
        }
        public void Model()
        {
            MetaModel m     = Utils.CommonInitialize();
            var       route = RouteTable.Routes[0] as DynamicDataRoute;

            Assert.IsNotNull(route, "#A1");
            Assert.IsNotNull(route.Model, "#A1-1");
            var handler = route.RouteHandler;

            Assert.IsNotNull(handler, "#A2");
            Assert.IsTrue(handler.GetType() == typeof(MyDynamicDataRouteHandler), "#A2-1");
            Assert.IsNull(handler.Model, "#A2-2");

            var req = new FakeHttpWorkerRequest();
            var ctx = new HttpContext(req);

            RequestContext rc = DynamicDataRouteHandler.GetRequestContext(ctx);

            Assert.IsNotNull(rc, "#B1");
            Assert.IsNull(handler.Model, "#B1-2");

            var wrapper = new MyHttpContextWrapper();
            var request = wrapper.Request as MyHttpRequestWrapper;

            // It appears .NET checks whether the indicated table exists - if not, GetRouteData will return
            // null (even though the Route class will find a match)
            request.SetProperty("AppRelativeCurrentExecutionFilePath", "~/NoSuchTable/List.aspx");
            request.SetProperty("PathInfo", String.Empty);

            // This must be non-null because DynamicData doesn't care to check whether the returned
            // value is null or not...
            request.SetProperty("QueryString", new NameValueCollection());

            // No table FooTable in the context - returns null
            RouteData rd = route.GetRouteData(wrapper);

            Assert.IsNull(rd, "#C1");

            // Apparently Model is set in the above call even though it returns null
            Assert.IsNotNull(handler.Model, "#C1-1");
            Assert.AreEqual(route.Model, handler.Model, "#C1-2");

            request.SetProperty("AppRelativeCurrentExecutionFilePath", "~/BarTable/List.aspx");
            rd = route.GetRouteData(wrapper);
            Assert.IsNotNull(rd, "#D1");
            Assert.IsNotNull(handler.Model, "#D1-1");
            Assert.AreEqual(route.Model, handler.Model, "#D1-2");
        }
Beispiel #5
0
        private string GetActionPathFromRoutes(RouteValueDictionary routeValues)
        {
            RequestContext requestContext = DynamicDataRouteHandler.GetRequestContext(this.Context);
            string         str            = null;

            if (requestContext != null)
            {
                routeValues.Add("__Model", this.Model);
                VirtualPathData virtualPath = RouteTable.Routes.GetVirtualPath(requestContext, routeValues);
                if (virtualPath != null)
                {
                    str = virtualPath.VirtualPath;
                }
            }
            return(str ?? string.Empty);
        }
        public void GetRequestContext()
        {
            AssertExtensions.Throws <ArgumentNullException> (() => {
                DynamicDataRouteHandler.GetRequestContext(null);
            }, "#A1");

            var req = new FakeHttpWorkerRequest();
            var ctx = new HttpContext(req);

            RequestContext rc = DynamicDataRouteHandler.GetRequestContext(ctx);

            Assert.IsNotNull(rc, "#B1");
            Assert.IsNotNull(rc.HttpContext, "#B1-1");
            Assert.IsNotNull(rc.RouteData, "#B1-2");

            Assert.IsNull(rc.RouteData.Route, "#C1");
            Assert.IsNull(rc.RouteData.RouteHandler, "#C1-1");
            Assert.IsNotNull(rc.RouteData.Values, "#C1-2");
            Assert.AreEqual(0, rc.RouteData.Values.Count, "#C1-3");
        }
Beispiel #7
0
        protected void DetailGridView_Init(object sender, EventArgs e)
        {
            //   string detailTableName = DynamicDataRouteHandler.GetRequestContext(this.Context).RouteData.Values["details"].ToString();
            MetaTable table = DynamicDataRouteHandler.GetRequestMetaTable(Context);

            //       var parents = detailTable.Columns.OfType<MetaForeignKeyColumn>().Select(s => s.ParentTable).Distinct();
            //     var children = detailTable.Columns.OfType<MetaChildrenColumn>().Select(s => s.ChildTable).Distinct();
            //   var detailschildren = children.Where(x => x.Attributes[typeof(Modiriat_Gharardadha.Helpers.DetailTableName)] != null); //get child from custom attributes
            Helpers.DetailTableName tblName = table.Attributes[typeof(Helpers.DetailTableName)] as Helpers.DetailTableName;

            MetaModel model = ((DynamicDataRouteHandler)(DynamicDataRouteHandler.GetRequestContext(this.Context).RouteData.RouteHandler)).Model;

            Microsoft.AspNet.EntityDataSource.EntityDataSource GridDetailDataSource = (Microsoft.AspNet.EntityDataSource.EntityDataSource)((sender as RadGrid).NamingContainer).FindControl("GridDetailDataSource");
            GridDetailDataSource.ContextTypeName = table.DataContextType.ToString();
            if (tblName != null)
            {
                GridDetailDataSource.EntitySetName = tblName.TabeName;
            }
            else
            {
                ((RadGrid)sender).DataSourceID = string.Empty;
            }
        }