我一直试图弄清楚如何在代码隐藏中创建telerik MVC网格? telerik文档有一种方法可以使用RadGrid而不是它们的MVC网格控件。
我基本上想要做的是根据某些条件创建网格,比如我可能有这样的网格:
Html.Telerik().Grid<ZeDate>("dates")
.Name("MyGrid")
.Pageable(paging => paging.PageSize(10))
.Sortable()
.Filterable()
.Groupable()
.ColumnContextMenu()
.DataKeys(keys => keys.Add(c => c.id))
.DataBinding(dataBinding =>
{
dataBinding.Ajax()
.Select("_SelectAjaxEditing", "Dates")
.Insert("_InsertAjaxEditing", "Dates")
.Update("_SaveAjaxEditing", "Dates")
.Delete("_DeleteAjaxEditing", "Dates");
})
.ToolBar(commands => commands.Insert())
.Columns(columns =>
{
columns.Bound(o => o.name);
columns.Bound(o => o.date1);
columns.Command(commands =>
{
commands.Edit().ButtonType(GridButtonType.Text);
commands.Delete().ButtonType(GridButtonType.BareImage);
}).Width(185);
})
.Editable(editing => editing.Mode(GridEditMode.InForm))
.Render();
但在某些情况下,我可能不希望显示特定列,例如&#39; date1&#39;或者我可能不想让网格可以过滤,基本上就是这样。
答案 0 :(得分:3)
除了Mystere Man提到的“无代码隐藏”之外,还有几种不同的方法可以在Telerik的MVC视图中执行条件方面。由于Telerik使用流畅的界面,您可以将其设置为变量并利用它。例如,您可以这样做:
var telerik = Html.Telerik().Grid<ZeDate>("dates")
.Name("MyGrid")
.Columns(columns =>
{
columns.Bound(o => o.name);
// Only render the date column if the designated
if (Model.CanSeeDate)
{
columns.Bound(o => o.date1);
}
});
// Only let the grid be filterable if allowed
if (Model.GridFilterable)
{
telerik = telerik.Filterable();
}
// Perform other telerik setup
telerik.Render();
答案 1 :(得分:2)
MVC没有代码隐藏。嗯,这不完全正确,您可以在WebForms视图中使用代码隐藏,但这是使用WebForms引擎的副作用,强烈建议不要使用它。
无论如何,当您需要使用webforms服务器控件时,您只会使用代码隐藏。由于MVC控件不使用WebForms页面生命周期,因此代码隐藏对它们没有用处。
也许你可以解释一下你正在尝试做什么。
编辑:
根据您的更改,我仍然不明白。您可以在视图中执行所有操作,不需要后面的代码。你在后面使用代码的原因是什么?