Пример #1
0
        private void HandleTable(HttpContext context)
        {
            string gridName = context.Request["Name"];

            //StringBuilder sbDebug = new StringBuilder();
            //foreach (string key in context.Request.QueryString.AllKeys)
            //{
            //    sbDebug.Append(key);
            //    sbDebug.Append(" = ");
            //    sbDebug.Append(context.Request.QueryString[key]);
            //    sbDebug.Append("<br />");
            //}

            var grid = MVCGridDefinitionTable.GetDefinitionInterface(gridName);

            var options = GridOptionParser.ParseOptions(grid, gridName, context.Request);

            var gridContext = GridContextUtility.Create(context, gridName, grid, options);

            GridEngine engine = new GridEngine();

            if (!engine.CheckAuthorization(gridContext))
            {
                //Forbidden
                context.Response.StatusCode = 403;
                context.Response.End();
                return;
            }

            IMVCGridRenderingEngine renderingEngine = GridEngine.GetRenderingEngine(gridContext);

            renderingEngine.PrepareResponse(context.Response);
            engine.Run(renderingEngine, gridContext, context.Response.Output);
        }
Пример #2
0
        public static IMVCGridRenderingEngine GetRenderingEngine(GridContext gridContext)
        {
            IMVCGridRenderingEngine renderingEngine = null;

            if (!String.IsNullOrWhiteSpace(gridContext.QueryOptions.RenderingEngineName))
            {
                foreach (ProviderSettings configuredEngine in gridContext.GridDefinition.RenderingEngines)
                {
                    if (String.Compare(gridContext.QueryOptions.RenderingEngineName, configuredEngine.Name, true) == 0)
                    {
                        string engineName = gridContext.QueryOptions.RenderingEngineName;

                        string typeString = gridContext.GridDefinition.RenderingEngines[engineName].Type;
                        Type   engineType = Type.GetType(typeString, true);

                        renderingEngine = (IMVCGridRenderingEngine)Activator.CreateInstance(engineType, true);
                    }
                }
            }

            if (renderingEngine == null)
            {
                renderingEngine = GetRenderingEngineInternal(gridContext.GridDefinition);
            }

            return(renderingEngine);
        }
Пример #3
0
        internal static string GenerateGrid(string gridName, out int statusCode, NameValueCollection nameValueCollection = null)
        {
            if (nameValueCollection == null)
            {
                nameValueCollection = new NameValueCollection();
            }

            statusCode = 200;
            IMVCGridDefinition grid        = MVCGridDefinitionTable.GetDefinitionInterface(gridName);
            QueryOptions       options     = QueryStringParser.ParseOptions(grid, nameValueCollection);
            GridContext        gridContext = MVCGrid.NetCore.Utility.GridContextUtility.Create(/*context, */ gridName, grid, options);

            GridEngine engine = new GridEngine();

            if (!engine.CheckAuthorization(gridContext))
            {
                //Forbidden
                statusCode = 403;
                return(string.Empty);
            }

            IMVCGridRenderingEngine renderingEngine = GridEngine.GetRenderingEngine(gridContext);

            // TODO: Reimplement this for csv exports and other rendering responses.
            //renderingEngine.PrepareResponse(context.Response);

            StringBuilder sb         = new StringBuilder();
            TextWriter    htmlWriter = new StringWriter(sb);

            engine.Run(renderingEngine, gridContext, htmlWriter);
            string html = sb.ToString();

            return(html);
        }
Пример #4
0
        public void Run(IMVCGridRenderingEngine renderingEngine, GridContext gridContext, TextWriter outputStream)
        {
            if (!renderingEngine.AllowsPaging)
            {
                gridContext.QueryOptions.ItemsPerPage = null;
            }

            var model = GenerateModel(gridContext);

            renderingEngine.Render(model, gridContext, outputStream);
        }
Пример #5
0
        public void Run(IMVCGridRenderingEngine renderingEngine, GridContext gridContext, TextWriter outputStream)
        {
            if (!renderingEngine.AllowsPaging)
            {
                gridContext.QueryOptions.ItemsPerPage = null;
            }

            var model = GenerateModel(gridContext);

            renderingEngine.Render(model, gridContext, outputStream);
        }
Пример #6
0
        private static string RenderContainerUsingRenderingEngine(IMVCGridDefinition gridDefinition, ContainerRenderingModel model)
        {
            IMVCGridRenderingEngine renderingEngine = GetRenderingEngineInternal(gridDefinition);

            using (MemoryStream ms = new MemoryStream())
            {
                using (TextWriter tw = new StreamWriter(ms))
                {
                    renderingEngine.RenderContainer(model, tw);
                }

                return(LocalEncoding.GetString(ms.ToArray()));
            }
        }
Пример #7
0
        private static string RenderUsingRenderingEngine(GridEngine engine, Models.GridContext gridContext)
        {
            IMVCGridRenderingEngine renderingEngine = GetRenderingEngine(gridContext);

            using (MemoryStream ms = new MemoryStream())
            {
                using (TextWriter tw = new StreamWriter(ms))
                {
                    engine.Run(renderingEngine, gridContext, tw);
                }

                string result = LocalEncoding.GetString(ms.ToArray());
                return(result);
            }
        }
Пример #8
0
        internal static IMVCGridRenderingEngine GetRenderingEngineInternal(IMVCGridDefinition gridDefinition)
        {
            string engineName = gridDefinition.DefaultRenderingEngineName;

            if (gridDefinition.RenderingEngines[engineName] == null)
            {
                throw new Exception(String.Format("The requested default rendering engine '{0}' was not found.", engineName));
            }

            string typeString = gridDefinition.RenderingEngines[engineName].Type;
            Type   engineType = Type.GetType(typeString, true);
            IMVCGridRenderingEngine renderingEngine = (IMVCGridRenderingEngine)Activator.CreateInstance(engineType, true);

            return(renderingEngine);
        }