public ActionResult  Grid_Read([DataSourceRequest] DataSourceRequest request, string id)
        {
            API.Elements.OrderItemController OC = new API.Elements.OrderItemController();
            string[] ids          = id.Split('_');
            var      actionResult = OC.GetScriptOrderItem(Convert.ToInt32(ids[1]));

            ViewBag.OID = id;

            ScriptItemSelector scriptorderitem = (actionResult as OkNegotiatedContentResult <ScriptItemSelector>).Content;

            if (scriptorderitem.LayoutType == "F")
            {
                scriptorderitem.DisplayColumns += string.Format(",{0},{1},{2},{3},{4}", "quantity", "filterKey", "ItemMaxQuantity", "Code", "Total");
            }
            else
            {
                scriptorderitem.DisplayColumns += string.Format(",{0},{1},{2},{3}", "quantity", "filterKey", "ItemMaxQuantity", "Code");
            }

            string[]  columns   = scriptorderitem.DisplayColumns.Split(',');
            DataTable dataTable = BuildDisplayColumnsTable(columns, scriptorderitem, HttpContext.Session);

            if (dataTable.Rows.Count > 0)
            {
                dataTable = dataTable.Select(string.Empty, "Code asc").CopyToDataTable();
            }

            return(Json(dataTable.ToDataSourceResult(request)));
        }
        public string Render(int?id, bool criticalelement, ControllerContext ContCont)
        {
            API.Elements.OrderItemController OC = new API.Elements.OrderItemController();
            var actionResult = OC.GetScriptOrderItem((int)id);

            if (actionResult != null && actionResult != actionResult as System.Web.Http.Results.NotFoundResult)
            {
                ScriptItemSelector scriptorderitem = (actionResult as OkNegotiatedContentResult <ScriptItemSelector>).Content;

                //scriptorderitem.DisplayColumns += string.Format(",{0},{1},{2},{3}", "quantity", "filterKey", "ItemMaxQuantity", "Code");

                if (criticalelement)
                {
                    ViewBag.OID      = "C_" + scriptorderitem.ScriptItemSelectorID.ToString();
                    ViewBag.Critical = "Y";
                }
                else
                {
                    ViewBag.OID      = "N_" + scriptorderitem.ScriptItemSelectorID.ToString();
                    ViewBag.Critical = "N";
                }

                if (scriptorderitem.LayoutType == "F")
                {
                    scriptorderitem.DisplayColumns += string.Format(",{0},{1},{2},{3},{4}", "quantity", "filterKey", "ItemMaxQuantity", "Code", "Total");
                }
                else
                {
                    scriptorderitem.DisplayColumns += string.Format(",{0},{1},{2},{3}", "quantity", "filterKey", "ItemMaxQuantity", "Code");
                }

                string[]  columns   = scriptorderitem.DisplayColumns.Split(',');
                DataTable dataTable = BuildDisplayColumnsTable(columns, scriptorderitem, ContCont.HttpContext.Session);

                if (dataTable.Rows.Count > 0)
                {
                    dataTable = dataTable.Select(string.Empty, "Code asc").CopyToDataTable();
                }

                //ContCont.HttpContext.Session["DataTable"] = dataTable;

                var Model = new QueryModel();
                Model.Data = dataTable;

                //Column description: Name and Type
                var dyn = new Dictionary <string, System.Type>();
                foreach (System.Data.DataColumn column in Model.Data.Columns)
                {
                    var t = System.Type.GetType(column.DataType.FullName);
                    dyn.Add(column.ColumnName, t);
                }

                Model.Bind = dyn;

                List <ScriptItem> scriptItems = GetScriptItems(scriptorderitem);
                bool   firsttime = true;
                string ilist     = "";

                foreach (ScriptItem scriptItem in scriptItems)
                {
                    if (firsttime)
                    {
                        ilist = scriptItem.ItemCode;
                    }
                    else
                    {
                        ilist = ilist + "~~" + scriptItem.ItemCode;
                    }
                    firsttime = false;
                }

                ViewBag.itemCollection = ilist;
                if (!string.IsNullOrEmpty(scriptorderitem.SetKeys))
                {
                    ViewBag.SetKeys = "Y";
                    criticalelement = true;
                }
                else
                {
                    ViewBag.SetKeys = false;
                }

                if (criticalelement)
                {
                    ViewBag.OID      = "C_" + scriptorderitem.ScriptItemSelectorID.ToString();
                    ViewBag.Critical = "Y";
                }
                else
                {
                    ViewBag.OID      = "N_" + scriptorderitem.ScriptItemSelectorID.ToString();
                    ViewBag.Critical = "N";
                }
                ViewBag.Title = scriptorderitem.SelectorTitle;
                if (scriptItems.Count == 1)
                {
                    return(RenderHelper.RenderViewToString(ContCont, "~/Views/OrderItem/_MultiItemGrid.cshtml", Model, ViewData));
                }
                else if (scriptItems.Count > 1)
                {
                    switch (scriptorderitem.LayoutType)
                    {
                    case "S":
                        return(RenderHelper.RenderViewToString(ContCont, "~/Views/OrderItem/_SelectItem.cshtml", Model, ViewData));

                    case "M":
                        return(RenderHelper.RenderViewToString(ContCont, "~/Views/OrderItem/_SelectMultiItem.cshtml", Model, ViewData));

                    case "F":
                        return(RenderHelper.RenderViewToString(ContCont, "~/Views/OrderItem/_MultiItemGrid.cshtml", Model, ViewData));
                    }
                }
            }

            return("");
        }