使用kendoGrid创建实体时,JayData与WebApi v2 Odata的行为不正确

时间:2014-06-10 05:18:52

标签: asp.net-mvc-5 kendo-grid jaydata asp.net-web-api-odata

这是我的控制器:

 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 请帮帮我

1 个答案:

答案 0 :(得分:0)

当我在客户端创建模式中更改键字段(Id)的默认值时,会出现此问题。 JayData向服务器发送带过滤器的GET请求。因此我有错误,因为我的实体上没有此Id。然后将POST新实体发送到服务器。 结论:无权在kendoGrid中编辑密钥并在服务器上处理它。