这是我的控制器:
public class ProductEntityController : EntitySetController<
ProductEntity, int>
{
public IQueryable< ProductEntity> Get(ODataQueryOptions< ProductEntity> parameters)
{
return productList.AsQueryable();
}
public ProductEntity Create(ProductEntity entity)
{
productList.Add(entity);
return entity;
} }
//---------------------------------------
this my JS code:
var context = new $data.initService('/odata');
context.then(function (db) {
var dsD = db.ProductEntity.asKendoDataSource();
grid= $('#gridD').kendoGrid({
dataSource: dsD,
filterable: true,
sortable: true,
pageable: true,
selectable: true,
height: 400,
columns: [
{ field: 'Name' },
{ field: 'Created' },
{ field: 'Index' },
{ field: 'LargeNum' },
{ command: ["edit", "destroy", "update"] }
],
toolbar: ["create", "save", "cancel"],
editable: "inline"
}).data("kendoGrid");
}).fail(function (args) { });
// ------ 当我&#34;添加新记录&#34;或&#34;保存更改&#34; ,两个请求被发送到服务器(GET然后POST)。
我有一个错误:'result count failed ' at GET Response.
我在kendo.js
中的以下代码中发现了一个问题:
create: function (options, model) {
var query = self;
query.entityContext.onReady().then(function () {
if (model.length > 1) {
..............
..........
}
else {
console.dir(ctx.storeToken);
model[0]
.innerInstance() // when i comment this line everything is gonna be ok
.save(ctx.storeToken)
.then(function () {
options.success();
})
.fail(function () {
console.log("error in create");
options.error({}, arguments);
});
}
});
}
为什么在保存前调用innerInstance()
?
我该如何解决我的问题?
我在MVC 5上使用Jaydata 1.3.6
和kendo ui以及webApi2 Odata
请帮帮我
答案 0 :(得分:0)
当我在客户端创建模式中更改键字段(Id)的默认值时,会出现此问题。 JayData向服务器发送带过滤器的GET请求。因此我有错误,因为我的实体上没有此Id。然后将POST新实体发送到服务器。 结论:无权在kendoGrid中编辑密钥并在服务器上处理它。