Kendo 仅编辑单列网格
Kendo edit only a single column of grid
我有一个 kendoGrid(),在 Javascript UI 中,配置参数为 "editable: true"。是否可以将我的网格的特定列设置为可编辑?
我尝试两种方式,第一种:
<div id="grid"></div>
<script>
$("#grid").kendoGrid({
columns: [
{ field: "name" },
{ field: "age" }
],
filterable: {
mode: "row"
},
editable: true,
dataSource: [{ id: 1, name: "Jane", age: 30 }, { id: 2, name: "John", age: 33 }],
schema: {
model: {
id: "id",
fields: {
name: { editable: true },
age: { editable: false }
}
}
}
});
</script>
第二种方式:
<div id="grid"></div>
<script>
$("#grid").kendoGrid({
columns: [
{ field: "name", editable: false },
{ field: "age" editable: true }
],
filterable: {
mode: "row"
},
editable: true,
dataSource: [{ id: 1, name: "Jane", age: 30 }, { id: 2, name: "John", age: 33 }],
});
</script>
但是不起作用。
我可以使用 MVC View Helper:
@(Html.Kendo().Grid((List<TestGrid>)Model.innerElements)
.Name("gridTest")
.Columns(column =>
{
column.Bound(dataGrid => dataGrid.id).Width("50%");
column.Bound(dataGrid => dataGrid.name).Width("50%");
})
.Filterable(filterable => filterable
.Mode(GridFilterMode.Row)
)
.Sortable()
.Pageable()
.Editable(editable => editable.Mode(GridEditMode.InCell))
.DataSource(data => data
.Ajax()
.Model(model =>
{
model.Id(m => m.id);
model.Field(field => field.id).Editable(false);
model.Field(field => field.name).Editable(true);
})
.Update(update => update.Action("gridTest_Update","Home"))
.PageSize(10)
)
)
但我无法在 JQuery 中重现。
schema.model
是 DataSource 定义的一部分,您在外部定义它。
你的方法 1 说:
dataSource: [
{ id: 1, name: "Jane", age: 30 },
{ id: 2, name: "John", age: 33 }
],
schema: {
model: {
id: "id",
fields: {
name: { editable: true },
age: { editable: false }
}
}
}
应该是:
dataSource: {
data: [
{ id: 1, name: "Jane", age: 30 },
{ id: 2, name: "John", age: 33 }
],
schema: {
model: {
id: "id",
fields: {
name: { editable: true },
age: { editable: false }
}
}
}
在这里查看:http://dojo.telerik.com/@OnaBai/iMEdE
关于实施 2,我在 Grid 的文档中看不到关于你在哪里的列 editable
属性。
我有一个 kendoGrid(),在 Javascript UI 中,配置参数为 "editable: true"。是否可以将我的网格的特定列设置为可编辑?
我尝试两种方式,第一种:
<div id="grid"></div>
<script>
$("#grid").kendoGrid({
columns: [
{ field: "name" },
{ field: "age" }
],
filterable: {
mode: "row"
},
editable: true,
dataSource: [{ id: 1, name: "Jane", age: 30 }, { id: 2, name: "John", age: 33 }],
schema: {
model: {
id: "id",
fields: {
name: { editable: true },
age: { editable: false }
}
}
}
});
</script>
第二种方式:
<div id="grid"></div>
<script>
$("#grid").kendoGrid({
columns: [
{ field: "name", editable: false },
{ field: "age" editable: true }
],
filterable: {
mode: "row"
},
editable: true,
dataSource: [{ id: 1, name: "Jane", age: 30 }, { id: 2, name: "John", age: 33 }],
});
</script>
但是不起作用。
我可以使用 MVC View Helper:
@(Html.Kendo().Grid((List<TestGrid>)Model.innerElements)
.Name("gridTest")
.Columns(column =>
{
column.Bound(dataGrid => dataGrid.id).Width("50%");
column.Bound(dataGrid => dataGrid.name).Width("50%");
})
.Filterable(filterable => filterable
.Mode(GridFilterMode.Row)
)
.Sortable()
.Pageable()
.Editable(editable => editable.Mode(GridEditMode.InCell))
.DataSource(data => data
.Ajax()
.Model(model =>
{
model.Id(m => m.id);
model.Field(field => field.id).Editable(false);
model.Field(field => field.name).Editable(true);
})
.Update(update => update.Action("gridTest_Update","Home"))
.PageSize(10)
)
)
但我无法在 JQuery 中重现。
schema.model
是 DataSource 定义的一部分,您在外部定义它。
你的方法 1 说:
dataSource: [
{ id: 1, name: "Jane", age: 30 },
{ id: 2, name: "John", age: 33 }
],
schema: {
model: {
id: "id",
fields: {
name: { editable: true },
age: { editable: false }
}
}
}
应该是:
dataSource: {
data: [
{ id: 1, name: "Jane", age: 30 },
{ id: 2, name: "John", age: 33 }
],
schema: {
model: {
id: "id",
fields: {
name: { editable: true },
age: { editable: false }
}
}
}
在这里查看:http://dojo.telerik.com/@OnaBai/iMEdE
关于实施 2,我在 Grid 的文档中看不到关于你在哪里的列 editable
属性。