我有一个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();
}
但是这里它不起作用可能只能引用一个。那么这将是什么解决方案?
答案 0 :(得分:3)
我建议您使用model
事件处理程序参数e
的字段,而不是使用jQuery来查找输入的值。
所以你应该这样做:
<script>
function onEdit(e) {
if (e.model.IsAllocated) {
this.closeCell();
}
}
</script>
在此处查看此行动:http://jsfiddle.net/OnaBai/ry82wcvc/