在代码后面创建一个telerik MVC网格?

时间:2012-01-07 04:46:51

标签: c# asp.net-mvc telerik telerik-grid

我一直试图弄清楚如何在代码隐藏中创建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;或者我可能不想让网格可以过滤,基本上就是这样。

2 个答案:

答案 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页面生命周期,因此代码隐藏对它们没有用处。

也许你可以解释一下你正在尝试做什么。

编辑:

根据您的更改,我仍然不明白。您可以在视图中执行所有操作,不需要后面的代码。你在后面使用代码的原因是什么?