Exemplo n.º 1
0
        public static MainPageUrlBuilder GetReadUrlForRecord(BaseNavigatorInfo nav, string id, string destinationTable)
        {
            var url = new MainPageUrlBuilder
            {
                IsDataControl = true,
                IsRead        = true,
                UserControl   = nav.TableName + MainPageUrlBuilder.UserControlTypeEdit,
            };

            RecurciveParentUrl(string.Empty, url, nav, id, destinationTable);
            return(url);
        }
Exemplo n.º 2
0
        internal static string RecurciveParentUrlID <TKey, TTableFrom, TTableTo>(BaseNavigatorInfo nav, TKey id, BaseNavigatorInfo parentNav)
            where TKey : struct
            where TTableFrom : class
            where TTableTo : class
        {
            var view = (BaseDataSourceView <TKey>)nav.DataSource;
            var data = view.GetSelectRow(id).Select(GetSelectItemExpression <TTableFrom>(view.RowType)).Select(GetSelectExpression <TTableFrom, TTableTo>(parentNav.ReferenceName));

            if (typeof(long) == parentNav.DataSourceViewGetName.KeyType)
            {
                return(data.Select(GetIDExpression <TTableTo>()).FirstOrDefault().ToString());
            }

            throw new NotSupportedException("MultipleKey is not supported");
        }
        protected void CreateCustomNavigators(BaseNavigatorInfo navigator)
        {
            foreach (var item in navigator.ParentNavigators)
            {
                if (navigator.TableType != item.TableType)
                {
                    if (!string.IsNullOrEmpty(item.CustomNavigatorUserControl))
                    {
                        var control = (BaseNavigatorCustomControl)Page.LoadControl(item.CustomNavigatorUserControl);
                        NavigatorCustomControls[item] = control;
                        Controls.Add(control);
                    }

                    CreateCustomNavigators(item);
                }
            }
        }
Exemplo n.º 4
0
        private static void RecurciveParentUrl(string reference, MainPageUrlBuilder url, BaseNavigatorInfo nav, string id, string destinationTable)
        {
            url.QueryParameters[MainPageUrlBuilder.ReferencIDPrefix + nav.TableName] = id;
            if (!string.IsNullOrEmpty(reference))
            {
                url.QueryParameters[reference + ".id"] = id;
            }

            var parentNav = nav.ParentNavigators.FirstOrDefault(r => r.TableName.Equals(destinationTable, StringComparison.OrdinalIgnoreCase))
                            ?? nav.ParentNavigators.FirstOrDefault(r => !r.HideIfEmpty);

            if (parentNav == null)
            {
                return;
            }

            var methodInfo    = typeof(NavigatorManager).GetMethod("RecurciveParentUrlID", BindingFlags.Static | BindingFlags.NonPublic);
            var genericMethod = methodInfo.MakeGenericMethod(nav.DataSourceViewGetName.KeyType, nav.TableType, parentNav.TableType);
            var nextId        = (string)genericMethod.Invoke(null, new[] { nav, nav.DataSourceViewGetName.GetKey(id), parentNav });

            if (string.IsNullOrEmpty(nextId))
            {
                return;
            }

            RecurciveParentUrl(
                string.IsNullOrEmpty(reference) ? parentNav.ReferenceName : reference + "." + parentNav.ReferenceName,
                url,
                parentNav,
                nextId,
                destinationTable);
        }