以下のコードに示すように、odata サービスに基づいて剣道のグリッドを作成しました。これはリストに値を表示しますが、新しいレコードの場合、これは機能しません。これは、作成された値だけでなく、リストのテキストも送信するためです。
@model IEnumerable<SE.CloudMonitor.Web.Models.ObjectType>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/CloudMonitor.cshtml";
}
<h2 class="tituloVista">Objetos</h2>
<div id="grid"></div>
<script>
$(document).ready(function () {
kendo.culture("es-CO");
var ObjectType = [
@foreach (var item in Model)
{
@: { "value": @Html.DisplayFor(modelItem => item.ObjectTypeID) ,'text':" @Html.DisplayFor(modelItem => item.ObjectTypeName) "},
}
];
var crudServiceBaseUrl = "Services/CloudMonitor.svc/Objects",
dataSource = new kendo.data.DataSource({
type: "odata",
transport: {
read: {
url: crudServiceBaseUrl,
dataType: "json"
},
update: {
url: function (data) {
return crudServiceBaseUrl + "(" + data.ObjectsID + ")";
}
},
create: {
url: crudServiceBaseUrl
},
destroy: {
url: function (data) {
return crudServiceBaseUrl + "(" + data.ObjectsID + ")";
}
}
},
batch: false,
pageSize: 5,
serverPaging: true,
schema: {
model: {
id: "ObjectsID",
fields: {
ObjectsID: { editable: false, nullable: true },
ObjectTypeID: { editable: true, nullable: true },
ObjectName: { editable: true, nullable: true }
}
}
}
});
$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true,
height: 400,
toolbar: ["create"],
columns: [
{ field: "ObjectName", width: "150px", title:"Nombre objeto" },
{ field: "ObjectTypeID", width: "150px", values: ObjectType, title: "Tipo objeto" },
{ command: ["edit", "destroy"], title: " ", width: "110px" }],
editable: "popup"
});
});
</script>
更新 2014-02-19 多くのソリューションを検索した後、剣道コンボ ボックスが機能しないことがわかりました。これを修正するために、選択タグを使用してテンプレートとエディターを配置したところ、正常に動作するようになりました。