在共享布局mvc 5中绑定GridLookup控件



我使用的是Devexpress MVC应用程序,其中我在共享布局中使用了一个GridLookup控件。我需要一些控制器,它会在每个请求时调用一个方法。为此,我使用了基本控制器,并使用ActionExecutingContext方法调用菜单加载和网格查找加载。我使用viewdata来设置值,在共享视图中,我使用了GridLookup控件的部分视图,在那里我将viewdata绑定到GridLookup。下面是用于加载菜单和网格查找过滤器的基本控制器。

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

下面是我使用网格锁定控制的局部视图的共享布局

@Html.Partial("_ReportFilter")

以下是此部分中使用的GridLookup控件:

@{
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()

在上面的GridLookup控件中,您可以使用在ProcessingMenus方法中加载的viewdata看到am绑定数据。这里的第一个问题是在GridLookup中,我也使用了控制器和操作方法,但当我选中和取消选中任何值并显示Loading…时,这并不是调用。。。。第二个问题是,过了一段时间,如果我再次点击url,OnActionExecuting方法不会调用,因为菜单不会再次加载。

我发现Devexpress团队的答案是使用@{Html.RenderAction("action","controller");}在共享视图中调用部分视图,然后在该操作中调用需要在共享布局中显示的部分视图并传递模型数据。在局部视图中,只需将网格与传递的模型绑定即可。

就是这样。

谢谢你的建议。

最新更新