Как связать данные в comboboxes с помощью одного запроса linq с помощью отдельного запроса в MVC
Привет,
Здесь я взял четыре частичных представления на странице просмотра index.cshtml.
четыре частичных вида имеют разные модели.
Во всплывающем содержимом я вызываю частичное представление другой формы.
В этом частичном представлении я взял 5 полей со списком и хочу связать данные с помощью модели сущностей.
Для этого в контроллере я передаю один метод, который содержит запрос linq для получения данных 5 полей.
Я передал переменные Viewbag и ViewData для привязки списка и выбранного значения.
На погрузку уходит больше времени.Я хочу загрузить данные после нажатия кнопки не при загрузке страницы.
Я хочу знать, как использовать различные запросы linq для 5 различных комбинаций с одним и тем же списком.
Пожалуйста, предложите мне лучшие способы его достижения.
Что я уже пробовал:
Мою Страницу Индекса
@model Tuple<DevExpress.DashboardWeb.WorkingMode, DashboardDemo.Models.vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data> @*@model DashboardDemo.Models.ViewModel.KPIViewModel*@ @Html.Partial("~/Views/Home/DashboardPartial.cshtml") @Html.Partial("~/Views/TreeView/VirtualModePartial.cshtml") @Html.Partial("~/Views/Home/ForecastGridPartial.cshtml") @Html.Partial("~/Views/Home/PopupPartial.cshtml")
PopupPartial.cshtml по
@model Tuple<DevExpress.DashboardWeb.WorkingMode, DashboardDemo.Models.vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data> @*@model DashboardDemo.Models.ViewModel.KPIViewModel*@ @(Html.DevExpress().PopupControl(settings => { settings.Name = "PopupControlSelectSub"; settings.ShowOnPageLoad = false; settings.ShowMaximizeButton = true; settings.Width = 1200; settings.Height = 500; settings.CallbackRouteValues = new { Controller = "Home", Action = "Main_Menu" }; settings.AllowDragging = true; settings.CloseAction = CloseAction.CloseButton; settings.PopupAnimationType = AnimationType.Slide; settings.HeaderText = "Main Menu"; settings.Modal = true; settings.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter; settings.PopupVerticalAlign = PopupVerticalAlign.WindowCenter; settings.PopupElementID = "btnName_CD"; settings.ScrollBars = ScrollBars.Horizontal; settings.SetContent(() => { Html.RenderPartial("Main_Menu"); }); }).GetHtml())
Main_Menu.cshtml по
@Html.DevExpress().DockPanel( settings => { settings.Name = "panel1"; settings.PanelUID = "panel1"; settings.HeaderText = "Requester's Perimeter"; settings.VisibleIndex = 0; settings.Width = 2000; settings.Height = 200; settings.ShowHeader = true; settings.ShowCloseButton = false; settings.AllowResize = true; settings.OwnerZoneUID = "leftZone"; settings.Styles.Content.Border.BorderStyle = BorderStyle.Solid; settings.Styles.Content.Border.BorderWidth = 1; settings.Styles.Content.Border.BorderColor = Color.FromArgb(0xBBD7E7); settings.Styles.Content.BackColor = Color.FromArgb(0xDBEBF4); settings.Styles.Content.Paddings.Padding = 0; settings.SetContent(() => { @Html.DevExpress().Label( s => { s.Name = "Label1"; s.Text = "Req Section:"; } ).GetHtml(); @Html.DevExpress().ComboBox( q => { q.Name = "ddl_Req_Section"; q.PreRender = (s, e) => { if (ViewData["GetReqSel"] != null) { MVCxComboBox c = s as MVCxComboBox; c.SelectedItem = c.Items.FindByValue(Model.Item2.txt_Req_Section); } }; //var s = ViewData["GetReqSel"].ToString(); //q.Properties.DataSource = DashboardDemo.Models.MainMenu.GetRequiredSelection(); //q.CallbackRouteValues = new { Controller = "Home", Action = "Main_Menu"}; q.Properties.ValueField = "txt_Req_Section"; q.Properties.TextField = "txt_Req_Section"; q.Properties.ValueType = typeof(string); q.Properties.NullText = "All"; q.Properties.DropDownStyle = DropDownStyle.DropDown; } ).BindList(ViewBag.GetReqsellist).GetHtml(); @Html.DevExpress().Label( a => { a.Name = "Label2"; a.Text = "Req IPT:"; } ).GetHtml(); @Html.DevExpress().ComboBox( b => { b.Name = "ddl_Req_IPT"; b.PreRender = (s, e) => { if (ViewData["GetReqIPT"] != null) { MVCxComboBox c = s as MVCxComboBox; c.SelectedItem = c.Items.FindByValue(Model.Item2.txt_Req_IPT); } }; b.Properties.ValueField = "txt_Req_IPT"; b.Properties.TextField = "txt_Req_IPT"; b.Properties.ValueType = typeof(string); b.Properties.NullText = "All"; b.Properties.DropDownStyle = DropDownStyle.DropDown; } ).BindList(ViewBag.GetReqsellist).GetHtml(); @Html.DevExpress().Label( c => { c.Name = "Label3"; c.Text = "Req Group:"; } ).GetHtml(); @Html.DevExpress().ComboBox( d => { d.Name = "ddl_Req_Group"; d.PreRender = (s, e) => { if (ViewData["GetReqGrp"] != null) { MVCxComboBox c = s as MVCxComboBox; c.SelectedItem = c.Items.FindByValue(Model.Item2.txt_Req_Group); } }; d.Properties.ValueField = "txt_Req_Group"; d.Properties.TextField = "txt_Req_Group"; d.Properties.ValueType = typeof(string); d.Properties.NullText = "All"; d.Properties.DropDownStyle = DropDownStyle.DropDown; } ).BindList(ViewBag.GetReqsellist).GetHtml(); @Html.DevExpress().Button( e=> { e.Name = "Filter_On_Parameter"; e.Text = "Filter On Parameter"; } ).GetHtml(); @Html.DevExpress().Button( f => { f.Name = "Reset_Scope"; f.Text = "Reset Scope"; } ).GetHtml(); }); settings.ControlStyle.Border.BorderStyle = BorderStyle.None; } ).GetHtml()
Домашний контроллер. cs
public ActionResult Index() { GetReqSelection(); WorkingMode workmode = new WorkingMode(); vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data Current_Data = new vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data(); var tuple = new Tuple<WorkingMode, vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data>(workmode, Current_Data); return View(tuple); //var BCVM = new Tuple<DevExpress.DashboardWeb.WorkingMode, vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data>(WorkingMode.Viewer,vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data.); //return View(new KPIViewModel()); //string workingModeString = this.Request.QueryString["mode"]; //var workingMode = !string.IsNullOrEmpty(workingModeString) && workingModeString == "designer" ? WorkingMode.Designer : WorkingMode.Viewer; //return View(workingMode); } void GetReqSelection() { using (var db = new KPIDataEntities()) { var query = (from category in db.vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data select new { category.txt_Req_Section,category.txt_Req_IPT,category.txt_Req_Group,category.txt_MP,category.txt_MP_Origin }).Distinct().ToList(); ViewBag.GetReqsellist = query.ToList(); ViewData["GetReqSel"] = query[0].txt_Req_Section; ViewData["GetReqIPT"] = query[0].txt_Req_IPT; ViewData["GetReqGrp"] = query[0].txt_Req_Group; ViewData["GetMP"] = query[0].txt_MP; ViewData["GetMPOrigin"] = query[0].txt_MP_Origin; //KPIViewModel vw = new KPIViewModel(); //vw.Current_Data.txt_Req_Section = query[0].txt_Req_Section; } //using (var db = new KPIDataEntities()) //{ // var query = (from category in db.vw_100_QUERY_FOR_XLS_WEEK_IN_PROGRESS_016_Forecast_Follow_Current_Data // select new // { // category.txt_Req_IPT // }).Distinct().ToList(); // ViewBag.GetReqIPT = query.ToList(); // ViewData["GetReqIPT"] = query[0].txt_Req_IPT; // //KPIViewModel vw = new KPIViewModel(); // //vw.Current_Data.txt_Req_Section = query[0].txt_Req_Section; //} }
Graeme_Grant
Существует много кода со сторонними элементами управления. Разбейте его на что-нибудь простое:
1. Добавить новый [Вам] &ампер; [пост] методы на геймпаде
2. Добавьте новое представление с кнопкой (post) и 5 списками с привязкой к данным (или ComboBoxes)
3. Добавьте код в метод [Post], чтобы получить данные и вернуть их в представление
Как только вы это сделаете, подключитесь к реальному просмотру.
TarunKumarSusarapu
Не могли бы вы подробно изложить сценарий на примере?
Graeme_Grant
Я пошел еще лучше и дал вам проект доказательства концепции... Это не является решением Ajax, поскольку оно не было оговорено в вопросе.
TarunKumarSusarapu
Не могли бы вы подробно изложить сценарий на примере?
Karthik_Mahalingam
использовать Ответить кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.