に列挙型をサポートしている必要があり、次のEF/LINQ/C#バージョン、待ちますモデル:
public partial class Project
{
public int Id { get; set; }
public string Name { get; set; }
public int Status { get; set; }
}
とStatusプロパティは、あなたの列挙型の値を示し、その後、あなたはこの列挙しました。そして、ちょうどこのような新しいのViewModelを作成
public enum ProjectStatuses
{
Current = 1,
Started = 2,
Stopped = 3,
Finished = 4,
}
:
public class ProjectDetails
{
public int Id { get; set; }
public string Name { get; set; }
public int Status { get; set; }
public ProjectStatuses StatusValue { get { return (ProjectStatuses) Status; } }
// This property to display in telerik ClientTemplate
public string StatusName { get { return Enum.GetName(typeof (ProjectStatuses), Status); } }
}
そして、私は拡張メソッドを愛しているから、私はこの1つ追加します:
public static class ModelListExtensions
{
public static IQueryable<ProjectDetails> ToViewModelDetails(this IQueryable<Project> modelList)
{
return modelList.Select(m => new ProjectDetails
{
Id = m.Id,
Name = m.Name,
Status = m.Status,
};
}
}
を更新:
ここでは、コントローラ
です
そして、これはビュー
@model IEnumerable<ProjectDetails>
@{
Html.Telerik()
.Grid(Model)
.Name("ProjectsGrid")
.Sortable()
.Filterable()
.EnableCustomBinding(true)
.DataBinding(dataBinding => dataBinding
.Ajax()
.Select("ReGetIndex", "Projects"))
.Pageable(page => page.Style(GridPagerStyles.PageSizeDropDown | GridPagerStyles.NextPreviousAndNumeric).Total(ViewBag.Total))
.Columns(column =>
{
column.Bound(m => m.Id).Hidden(true);
column.Bound(m => m.Name);
column.Bound(m => m.StatusValue).ClientTemplate("<#= StatusName #>");
})
.Render();
}
アップデートです:
:あなたは少なくとも一つのソート順を強制したい場合は、このようなものを使用することができ
if (!command.SortDescriptors.Any()) { command.SortDescriptors.Add(new SortDescriptor {Member = "YourDefaultProperty"}); }
モデルのプロパティにグリッドをバインドするときにこれを行うことはできますか? – J4N
@ J4N ViewModelクラスを追加したくない場合は、モデルを部分クラスで拡張するだけで私たちの例では、2つのプロパティ "StatusValue"と "StatusName"を入れてください –
実際に、ビュー内のグリッドにデータをどのようにバインドしているかを私に実際に示すことができますか? – J4N