如何在KendoGrid列Editable属性中传入UnitsInStock作为函数参数
解决Kendo Grid列Editable属性传递UnitsInStock参数的问题
你的代码有两个核心问题:一是函数名拼写错误(funcion应为function),二是直接传参的方式不符合Kendo Grid的回调规则。正确的做法是利用Editable回调自带的options参数,获取当前行的UnitsInStock值。
修正后的后端Grid代码
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ProductViewModel>() .Name("grid") .Columns(columns => { // 仅传递函数名,无需手动加括号和参数 columns.Bound(p => p.ProductName).Editable("checkIfEditable"); columns.Bound(p => p.UnitPrice).Width(120); columns.Bound(p => p.UnitsInStock).Width(120); columns.Bound(p => p.Discontinued).Width(120); }) .DataSource(dataSource => dataSource .Ajax() .Model(model => model.Id(p => p.ProductID)) // 其他数据源配置... ) )
对应的JavaScript判断函数
在页面的<script>标签中定义函数,通过options.model获取当前行的库存值并判断:
function checkIfEditable(options) { // 从当前行的数据模型中取出UnitsInStock var unitsInStock = options.model.UnitsInStock; // 示例逻辑:库存大于0时允许编辑ProductName列 return unitsInStock > 0; }
逻辑说明
Kendo Grid的Editable回调函数会自动传入一个options对象,其中的model属性对应当前行的数据实例,直接通过它就能访问任何字段的值,不需要手动传递参数。
内容的提问来源于stack exchange,提问作者Israel Soldevilla Sanchez
相关产品推荐
相关产品推荐

