首页 > 解决方案 > 如何有条件地禁用 kendogrid 中的 selectlistitem

问题描述

我有一个 kendogrid,它有一个允许用户选择公寓状态的字段,我想检查网格数据绑定时的值是否 =3,然后禁用单元格编辑。

@(Html.Kendo().Grid<ApartmentModel>()
  .Name("UnitsGrid")
  .Columns(columns =>
   {
       columns.ForeignKey(o => o.Status, 
              new List<SelectListItem>() { 
              new SelectListItem() { Text =  "Not Reserved", Value = "1", Selected = true }, 
              new SelectListItem() { Text = "Reserved", Value = "2" },
              new SelectListItem() { Text =  "Contracted", Value = "3" } }, "Value", "Text")

在网格数据绑定事件中

function GridDataBound(data) {

        var grid = $("#UnitsGrid").data("kendoGrid");
        debugger;
        var gridData = grid.dataSource.view();
        for (var i = 0; i < gridData.length; i++) {
            var gridItem = gridData[i];
            if (gridItem.Status == 3) { //Condition
                grid.table.find("[name=Status_input]").hide();
            }
        }
    }


标签: javascriptjqueryasp.net-mvcrazorkendo-asp.net-mvc

解决方案


我认为对于这种情况,列模板是更好的选择。就像是:

columns.Bound(p => p.Status).Template( @<text>
    @if(@item.Status == 3){
        // Display editable dropdown list
    } else {
       // Just show the value or a message
       "Contracted"
    }
    </text>
);

推荐阅读