C# 行值上的剑道网格UI Html帮助器枚举替换
我有这个例子,我想用一个枚举改变一个数值和一个字符串值。我尝试了一些方法,比如.ClientTemplate和.EditorTemplateName。如何使用枚举设置行的格式?以下是一个网格示例: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 => {
@(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
,然后再次测试它。