改变一个列在剑道UI网格
本文关键字:UI 网格 一个 改变 | 更新日期: 2023-09-27 18:09:53
我有一个ASP。asp.net MVC 5应用程序。Kendo UI网格调用Web API控制器来检索数据。我有一个要求,以改变列的内容,这取决于什么燃料类型的车。因此,在我的页面模型中,我为燃料类型创建了一个字符串。在MVC控制器中,设置如下:
model.FuelType = "Diesel"; //just hardcoded for testing in reality will be dynamically set by User in a Previous screen - could be set to Petrol in which case I need to change column data
在部分视图上,我有我的剑道UI网格定义如下-也在部分视图上,我有一个html。隐藏用于存储FuelType
的值 @(Html.Kendo().Grid<Car.Web.Models.CarViewModel>()
.Name("CarViewGrid")
.Columns(columns =>
{
columns.Bound(c => c.Make).Width(180);
columns.Bound(c => c.ModelNo).Width(280);
columns.Bound(c => c.EngineSize).Width(120);
columns.Bound(c => c.Colour).Width(65);
columns.Bound(c => c.MPG).Width(65);
columns.Bound(c => c.CarId)
.Title("Include in Report")
.ClientTemplate("<input type='"checkbox'" name='"selectedIds'" value='"#=CarId#'" class='"checkboxClass'" />")
.Width(90)
.Sortable(false);
})
.Events(builder => builder.DataBound("gridDataBound"))
.HtmlAttributes(new { style = "height: 420px;" })
.Scrollable()
.Sortable(sortable => sortable
.AllowUnsort(true)
.SortMode(GridSortMode.MultipleColumn))
.Pageable(pageable => pageable
.PageSizes(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Url("api/Car/GetCarDetails").Type(HttpVerbs.Get).Data("GetCustId"))
)
)
我在我的列中留下了一行空白,这就是我需要包括不同列的地方-如果燃料类型是汽油,我需要有
columns.Bound(c => c.NumberSparkPlugs).Width(65);
但如果燃料类型是柴油,我需要有
columns.Bound(c => c.Torque).Width(65);
这两个都是我的CarViewModel上的字符串属性。
有没有人做过类似的剑道UI网格或可以建议在最好的方法来实现这一点?
我在VisualStudio中没有一个Kendo MVC项目来测试这个,但是你不能只使用if
语句:
.Columns(columns =>
{
columns.Bound(c => c.Make).Width(180);
columns.Bound(c => c.ModelNo).Width(280);
columns.Bound(c => c.EngineSize).Width(120);
columns.Bound(c => c.Colour).Width(65);
columns.Bound(c => c.MPG).Width(65);
columns.Bound(c => c.CarId)
.Title("Include in Report")
.ClientTemplate("<input type='"checkbox'" name='"selectedIds'" value='"#=CarId#'" class='"checkboxClass'" />")
.Width(90)
.Sortable(false);
// added code here...
if(Model.FuelType == "Petrol")
columns.Bound(c => c.NumberSparkPlugs).Width(65);
else
columns.Bound(c => c.Torque).Width(65);
})