C# 行值上的剑道网格UI Html帮助器枚举替换

C# 行值上的剑道网格UI Html帮助器枚举替换,c#,enums,telerik,telerik-grid,telerik-mvc,C#,Enums,Telerik,Telerik Grid,Telerik Mvc,我有这个例子,我想用一个枚举改变一个数值和一个字符串值。我尝试了一些方法,比如.ClientTemplate和.EditorTemplateName。如何使用枚举设置行的格式?以下是一个网格示例: @(Html.Kendo().Grid<TelerikAspNetCoreApp2.Models.OrderViewModel>() .Name("grid") .Columns(columns => {

我有这个例子,我想用一个枚举改变一个数值和一个字符串值。我尝试了一些方法,比如.ClientTemplate和.EditorTemplateName。如何使用枚举设置行的格式?以下是一个网格示例:

@(Html.Kendo().Grid<TelerikAspNetCoreApp2.Models.OrderViewModel>()
            .Name("grid")
            .Columns(columns =>
            {
                columns.Bound(p => p.OrderID).Filterable(false);
                columns.Bound(p => p.Freight).EditorTemplateName("Test"); //This is the value to change
                columns.Bound(p => p.OrderDate).Format("{0:MM/dd/yyyy}");
                columns.Bound(p => p.ShipName).Filterable(f => f.UI("shipName"));
                columns.Bound(p => p.ShipCity).Filterable(f => f.UI("shipCity"));
            })
            .Pageable()
            .Sortable()
            .Scrollable()
            .Navigatable()
            .Pageable()
            .Scrollable()
            .Filterable()
            .HtmlAttributes(new { style = "height:550px;" })
            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(20)
                .Read(read => read.Action("Orders_Read", "Grid"))
            )
        ) 
    ....
   @functions {
   public string UseEnum(string x)
   {
       return Enum.Parse(typeof(TelerikAspNetCoreApp2.Enums.Test), x).ToString();
   }
}
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Bound(p=>p.OrderID).Filterable(false);
columns.Bound(p=>p.Freight).EditorTemplateName(“Test”);//这是要更改的值
columns.Bound(p=>p.OrderDate).Format(“{0:MM/dd/yyyy}”);
columns.Bound(p=>p.ShipName).Filterable(f=>f.UI(“ShipName”));
columns.Bound(p=>p.ShipCity).Filterable(f=>f.UI(“ShipCity”);
})
.Pageable()
.Sortable()
.Scrollable()
.Navigatable()
.Pageable()
.Scrollable()
.可过滤()
.HtmlAttributes(新的{style=“height:550px;”})
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(20)
.Read(Read=>Read.Action(“Orders\u Read”,“Grid”))
)
) 
....
@功能{
公共字符串UseEnum(字符串x)
{
返回Enum.Parse(typeof(TelerikAspNetCoreApp2.Enums.Test),x).ToString();
}
}
这是示例enum

public enum Test
{
    zero = 0,
    one = 10,
    two = 20,
    three = 30,
    four = 40,
    five = 50
}

public static List<SelectListItem> EnumToSelectList(Type enumType)
        {
            return Enum
              .GetValues(enumType)
              .Cast<int>()
                  .Select(i => new SelectListItem
                  {
                      Value = i.ToString(),
                      Text = Enum.GetName(enumType, i),
                  }
              )
              .ToList();
        }
        @functions {
    public string UseEnum(string x)
    {
        return Enum.Parse(typeof(TelerikAspNetCoreApp2.Enums.Prova), x).ToString();
    }
}
公共枚举测试
{
零=0,
1=10,
二=20,
三等于30,
四=40,
五=50
}
公共静态列表EnumToSelectList(类型enumType)
{
返回枚举
.GetValues(枚举类型)
.Cast()
.选择(i=>new SelectListItem
{
Value=i.ToString(),
Text=Enum.GetName(enumType,i),
}
)
.ToList();
}
@功能{
公共字符串UseEnum(字符串x)
{
返回Enum.Parse(typeof(TelerikAspNetCoreApp2.Enums.Prova),x).ToString();
}
}

您可以尝试在视图中为该控制器添加一个文件夹,并将其命名为“EditorTemplates”,然后为“Test”创建一个局部视图。这将是该字段的控件,并在使用网格调用该视图时添加一个ViewBag.EnumTest,因为它将映射到EditorTemplate局部视图

@(Html.Kendo().ComboBox()
    .Filter("contains")
    .BindTo(ViewBag.EnumTest)
    .Placeholder("Select Freight")
    .HtmlAttributes(new { @id = "Freight", @name = "Freight"})
    .Name("Freight")
)
然后将其放入“测试”部分视图中

@(Html.Kendo().ComboBox()
    .Filter("contains")
    .BindTo(ViewBag.EnumTest)
    .Placeholder("Select Freight")
    .HtmlAttributes(new { @id = "Freight", @name = "Freight"})
    .Name("Freight")
)
ViewBag.EnumTest=EnumToSelectList因此它将有一个SelectListItem,将在combobox中使用

@{
    List<SelectListItem> EnumTest = new List<SelectListItem>
    {
        new SelectListItem 
        {
            Value = "0",
            Text = "zero "
        },
        new SelectListItem 
        {
            Value = "10",
            Text = "one"
        },
        new SelectListItem 
        {
            Value = "20",
            Text = "two"
        },
        new SelectListItem 
        {
            Value = "30",
            Text = "three"
        },
        new SelectListItem 
        {
            Value = "40",
            Text = "four"
        },
        new SelectListItem 
        {
            Value = "50",
            Text = "five"
        }
    };
}

@(Html.Kendo().ComboBox()
    .Filter("contains")
    .BindTo(EnumTest)
    .Placeholder("Select Freight")
    .HtmlAttributes(new { @id = "Freight", @name = "Freight"})
    .Name("Freight")
)
或者您可以尝试手动填充组合框

@{
    List<SelectListItem> EnumTest = new List<SelectListItem>
    {
        new SelectListItem 
        {
            Value = "0",
            Text = "zero "
        },
        new SelectListItem 
        {
            Value = "10",
            Text = "one"
        },
        new SelectListItem 
        {
            Value = "20",
            Text = "two"
        },
        new SelectListItem 
        {
            Value = "30",
            Text = "three"
        },
        new SelectListItem 
        {
            Value = "40",
            Text = "four"
        },
        new SelectListItem 
        {
            Value = "50",
            Text = "five"
        }
    };
}

@(Html.Kendo().ComboBox()
    .Filter("contains")
    .BindTo(EnumTest)
    .Placeholder("Select Freight")
    .HtmlAttributes(new { @id = "Freight", @name = "Freight"})
    .Name("Freight")
)
@{
列表枚举测试=新列表
{
新建SelectListItem
{
Value=“0”,
Text=“零”
},
新建SelectListItem
{
Value=“10”,
Text=“一”
},
新建SelectListItem
{
Value=“20”,
Text=“两个”
},
新建SelectListItem
{
Value=“30”,
Text=“三”
},
新建SelectListItem
{
Value=“40”,
Text=“四”
},
新建SelectListItem
{
Value=“50”,
Text=“五”
}
};
}
@(Html.Kendo().ComboBox())
.过滤器(“包含”)
.BindTo(枚举测试)
.占位符(“选择运费”)
.HtmlAttributes(新的{@id=“运费”,@name=“运费”})
.名称(“运费”)
)

我做到了,但仍然没有工作。方法EnumToSelectList位于具有enum的外部类上。我在网格列的边界上添加了EditorTemplateName(“Test”),但它仍然不起作用。请尝试使用
SelectListItem
列表手动填充
ViewBag.EnumTest
,然后再次测试它。