2017-11-14 4 views
0

Ich benutze Devexpress MVC-Anwendung, wo ich ein GridLookup-Steuerelement in freigegebenen Layout verwendet. Ich brauchte hier einen Controller, der bei jeder Anfrage eine Methode aufruft. Zu diesem Zweck habe ich den Basis-Controller benutzt und die ActionExecutingContext-Methode benutzt, wo ich mein Menü loading und gridlookup loading aufruft. Ich benutze viewdata, um den Wert festzulegen, und in der geteilten Ansicht habe ich eine Teilansicht meines GridLookup-Steuerelements verwendet, wo ich viewdata an GridLookup binde. Unten ist der Basis-Controller zum Laden von Menüs und Filtern von gridlookup.Bind GridLookup Kontrolle in freigegebenen Layout mvc 5

protected override void OnActionExecuting(ActionExecutingContext context) 
{ 
    base.OnActionExecuting(context); 
    ProcessingMenus(); 
} 

Unten ist das gemeinsame Layout, wo ich partialview von gridlookup Steuer

@Html.Partial("_ReportFilter")

Unterhalb der GridLookup Kontrolle in diesem Teil verwendet wird, bin mit:

@{ 
    var gridLookup = Html.DevExpress().GridLookup(settings => 
    { 
     settings.Name = "LookupLobMultiple"; 
     settings.KeyFieldName = "Description"; 
     settings.GridViewProperties.CallbackRouteValues = new { Controller = "Manage", Action = "BindLOB" }; 
     settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple; 
     settings.Properties.TextFormatString = "{0}"; 
     settings.Properties.MultiTextSeparator = ";"; 
     settings.CommandColumn.Visible = true; 
     settings.CommandColumn.ShowSelectCheckbox = true; 
     settings.CommandColumn.SelectAllCheckboxMode = GridViewSelectAllCheckBoxMode.AllPages; 
     settings.GridViewProperties.SettingsPager.Visible = false; 
     settings.GridViewProperties.Settings.ShowGroupPanel = false; 
     settings.GridViewProperties.Settings.ShowFilterRow = false; 
     settings.Columns.Add("ID").Visible = false; 
     settings.Columns.Add("Description").Caption = "Line of Business"; 
     settings.PreRender = (s, e) => 
     { 
       MVCxGridLookup gl = (MVCxGridLookup)s; 
       gl.GridView.Selection.SelectRowByKey(ViewData["LOB"]); 
     }; 
    }); 
} 
@gridLookup.BindList(ViewData["LobModal"]).GetHtml() 

In der obigen GridLookup Kontrolle Sie können sehen, bin bind Daten mit viewdata, die in ProcessingMenus Methode geladen wird. Das erste Problem hier ist in GridLookup Ich habe Controller und Aktionsmethode auch verwendet, aber dies ruft nicht auf, wenn ich einen Wert check und entmarkiere und zeige Laden .... Zweite Ausgabe wenn nach irgendwann wenn ich wieder die URL OnActionExecuting Methode ist nicht Aufruf wegen es Menüs werden nicht wieder geladen.

+0

Kann jemand auf diese Frage antworten. Ich warte immer noch auf jemandes Antwort. Wenn Sie irgendwelche Zweifel haben, fragen Sie bitte. –

+0

Warum fragst du dann nicht den Support von DevExpress? – Mikhail

+0

Hallo Mikhail, ich habe die gleiche Frage im devexpress Forum gestellt und die Antwort bekommen. –

Antwort

0

Ich fand die Antwort von Devexpress-Team ist, Teilansicht in der gemeinsamen Ansicht aufrufen Verwendung @ {Html.RenderAction ("Aktion", "Controller");} und dann in dieser Aktion Aufruf der Teilansicht, die angezeigt werden muss Gemeinsames Layout mit übergebenen Modelldaten. und in Teilansicht nur das Gitter mit dem übergebenen Modell binden.

Das ist es.

Vielen Dank für Ihre Anregungen.