根据条件禁用kendo网格中的行

时间:2014-08-13 09:18:58

标签: javascript jquery asp.net kendo-ui kendo-grid

我有一个Kendo网格,其中我在最后一列中有一个复选框,我从服务器端绑定此网格(从服务器填充数据),并且复选框值也来自服务器.I想要禁用复选框值为true的整行,即检查它并希望在复选框值为false时允许编辑,即不检查。我的代码如下:

@(Html.Kendo().Grid(Model)
    .Name("UpdatedHeadGrid")
        .Columns(columns =>
        {
           columns.Bound(p => p.ID).Hidden(true).ClientTemplate("#= ID#" + "<input type='hidden' class='ID'  value='#=ID#' />").Width(10);
           columns.Bound(p => p.IsAllocated).HeaderHtmlAttributes(new { title = "Allocatable" }).Title("Allocatable").ClientTemplate("<input type='checkbox'  ${ IsAllocated == true ? checked='checked' : ''}   class='IsAllocated' value='#=data.IsAllocated#' style='width:50px;' />").Width(50).HtmlAttributes(new { style = "text-align: center;vertical-align: middle;"});
           columns.Bound(p => p.Total).HeaderHtmlAttributes(new { title = "Total Amount" }).Title("Total").ClientTemplate("<input type='text' disabled='disabled' class='Total' value='#=data.Total#' style='width:65px;' />").Width(60).HtmlAttributes(new { style = "text-align:right", onclick = "DisableEdit(this)" });
           .Editable(editable => editable.Mode(GridEditMode.InCell))
    .Events(e =>
    {
       e.DataBound("onRowBound");

       e.Edit("onEdit");
    })     
    .PageSize(15)
    .Resizable(resize => resize.Columns(true)) 
)

为此,我编写了编辑函数,即onEdit函数,如下所示:

<script>
    function onEdit(e) {
        var fieldName12548 = e.container.find('input[type="checkbox"][name="IsAllocated"]').attr("value");
        if (fieldName12548 === "Total") {
            this.closeCell();
        }
    }
</script>

此处不是仅包含fieldname =&#34; Total&#34;的列。我必须禁用所有行。

用于编辑多个列

var fieldName = e.container.find("input").attr("name");
  if (fieldName === "AccountTransactionItemDescription" && fieldName === "Identifier" && fieldName === "TradeOrNonTrade" && fieldName === "EntityName")
   {
     this.closeCell();
   }

但是这里它不起作用可能只能引用一个。那么这将是什么解决方案?

1 个答案:

答案 0 :(得分:3)

我建议您使用model事件处理程序参数e的字段,而不是使用jQuery来查找输入的值。

所以你应该这样做:

<script>
    function onEdit(e) {
        if (e.model.IsAllocated) {
            this.closeCell();
        }
    }
</script>

在此处查看此行动:http://jsfiddle.net/OnaBai/ry82wcvc/