我希望将RowAction与lambda一起使用来设置网格中几行数据的背景颜色。
<%: Html.Kendo().Grid<HomeController.SuccessfulBuildsByDevice>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.A);
columns.Bound(p => p.B);
})
.Scrollable()
.Sortable()
.Filterable()
.RowAction(row =>
{
if(row.DataItem.A > row.DataItem.B)
row.HtmlAttributes["style"] = "background:red";
})
.HtmlAttributes(new { style = "height:500" })
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("_GetData", "Home"))
.ServerOperation(false)
)
%>
然而,当我使用上面的RowAction()似乎没有被调用。我尝试设置一个断点等等。我在RowAction()的预期用途中遗漏了什么,有没有人看到一个明显的问题?
答案 0 :(得分:8)
问题是.Ajax()和.RowAction()是互斥的
http://www.kendoui.com/forums/kendo-ui-web/grid/ajax-binding-and-rowaction-conflict-.aspx
答案 1 :(得分:0)
仅仅因为我今天就来解决这个问题,并且为了节省时间,所以根据对卡住问题的解释,对我有用的简短答案
将此添加到网格
.Events(e => e.DataBound("onDataBound"))
将此javascript添加到网格上方
function onDataBound() {
// get the grid
var grid = this;
// iterate through each row
grid.tbody.find('>tr').each(function () {
// get the row item
var dataItem = grid.dataItem(this);
// check for the condition
if (dataItem.IsArchived) {
// add the formatting if condition is met
$(this).addClass('bgRed');
}
})
}