예제 #1
0
        private static string RenderPreloadedGridHtml(IMVCGridDefinition grid, string gridName, object pageParameters)
        {
            string preload = string.Empty;

            var options = QueryStringParser.ParseOptions(grid, HttpHelper.HttpContext.Request.ToNameValueCollection());

            // set the page parameters for the preloaded grid
            Dictionary <string, string> pageParamsDict = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            if (pageParameters != null)
            {
                foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(pageParameters))
                {
                    object obj2 = descriptor.GetValue(pageParameters);
                    pageParamsDict.Add(descriptor.Name, obj2.ToString());
                }
            }
            if (grid.PageParameterNames.Count > 0)
            {
                foreach (var aqon in grid.PageParameterNames)
                {
                    string val = "";

                    if (pageParamsDict.ContainsKey(aqon))
                    {
                        val = pageParamsDict[aqon];
                    }

                    options.PageParameters[aqon] = val;
                }
            }

            var gridContext = GridContextUtility.Create(/*HttpContext.Current,*/ gridName, grid, options);

            GridEngine engine = new GridEngine();

            switch (grid.RenderingMode)
            {
            case RenderingMode.RenderingEngine:
                preload = RenderUsingRenderingEngine(engine, gridContext);
                break;

            // TODO: Enable support for controller rendering
            //case Models.RenderingMode.Controller:
            //    preload = RenderUsingController(engine, gridContext);
            //    break;
            default:
                throw new InvalidOperationException();
            }
            return(preload);
        }
예제 #2
0
        private static string RenderUsingRenderingEngine(GridEngine engine, 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);
            }
        }
예제 #3
0
        private static string RenderUsingController(GridEngine engine, GridContext gridContext)
        {
            return(string.Empty);
            //var model = engine.GenerateModel(gridContext);

            //var controllerContext = helper.ViewContext.Controller.ControllerContext;
            //ViewDataDictionary vdd = new ViewDataDictionary(model);
            //TempDataDictionary tdd = new TempDataDictionary();
            //using (var sw = new StringWriter())
            //{
            //    var viewResult = ViewEngines.Engines.FindPartialView(controllerContext,
            //                                                             gridContext.GridDefinition.ViewPath);
            //    var viewContext = new ViewContext(controllerContext, viewResult.View, vdd, tdd, sw);
            //    viewResult.View.Render(viewContext, sw);
            //    viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
            //    return sw.GetStringBuilder().ToString();
            //}
        }