Kendo ui 剑道网格能否成功地使用一个存储过程进行GET过程和另一个存储过程进行更新?

Kendo ui 剑道网格能否成功地使用一个存储过程进行GET过程和另一个存储过程进行更新?,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我的问题涉及使用实体框架/Kendo网格和Web API 2控制器,而不使用ASP.NET MVC/Razor。我所有的代码要么是C#in控制器,要么是直接的HTML/JavaScript 剑道网格似乎更适合直接使用表/视图,而不是使用存储过程,我的评估是否正确 我试图在EF中使用一个带有自定义操作名称的存储过程来返回IEnumerable,它可以很好地填充网格,但当我尝试点击“保存更改”按钮时,它会尝试执行POST和PUT(我确实认为它正在执行POST,因为其中一行没有定义主键) 我还应该提到

我的问题涉及使用实体框架/Kendo网格和Web API 2控制器,而不使用ASP.NET MVC/Razor。我所有的代码要么是C#in控制器,要么是直接的HTML/JavaScript

剑道网格似乎更适合直接使用表/视图,而不是使用存储过程,我的评估是否正确

我试图在EF中使用一个带有自定义操作名称的存储过程来返回
IEnumerable
,它可以很好地填充网格,但当我尝试点击“保存更改”按钮时,它会尝试执行POST和PUT(我确实认为它正在执行POST,因为其中一行没有定义主键)

我还应该提到,我认为模型并不完全相同,因为在网格中返回的字段不一定与我的保存/更新过程中触发的内容1:1相关。我在GET中返回了更多字段,并且在kendoDataSource中指定了模型,但是我可以自定义并选择在单击“保存更改”时返回的内容吗

在调试期间,我在network inspector中看到了正确的行,但是当我在POST方法中看到它在Web API 2控制器中运行时,当我将鼠标悬停在返回的对象上时,我甚至看不到任何值,这可能是另一个问题

所以我的核心问题是

  • 在批处理保存期间,是否可以在GET过程中将一个模型返回到剑道网格,并在该网格上的PUT/POST过程中将一个完全不同的模型返回到剑道网格?剑道网格似乎更喜欢直接使用表或视图,但我的政策是,我根本不能接触表,我们更喜欢不使用视图,我们更喜欢完全使用存储过程

  • 剑道网格在执行批更新/保存时,即使它说它是批处理,它是否最终会按每行发送数据,所以一次发送一个?或者它实际上是一批发送数据

  • 我们使用网格来检索动态数据,行不会固定,我使用了一些模板将CSS类添加到包装单元格的元素中,但这不够灵活,但我想知道是否有办法将数据从网格中拉出,并将其放入前端的一些隐藏表或值中,并在网格本身的范围外有一个单独的保存按钮,以保存用户新键入的值


  • 提前感谢您

    的更新。存储过程非常易于使用。你会有一个类似的方法

    public ActionResult Products_Update([DataSourceRequest]DataSourceRequest request, Product product)
    
    在这里,您可以找出所有属性,并将它们用作存储过程中的参数

    对于选择,则很难避免使用表。这是因为所有分页和排序都基于基本上是sql的一部分的IQueryable。然后在扩展方法中为它提供分页和排序。您有这样一种方法:

    public ActionResult Products_Read([DataSourceRequest]DataSourceRequest request)
    
    当然,您可以从请求中提取所有内容,并手动处理排序和分页,但对于视图或表,您只需调用扩展方法即可获取所有内容:

    var result = products.ToDataSourceResult(request);
    

    所以,我解决了我的问题

    1.)在控制器中,我需要一个与此类似的方法声明

    public IHttpActionResult UpdateProcedure([FromBody]IEnumerable<somevalue> models)
    

    这些东西的组合至少使我能够看到WebAPI2控制器中的模型和值


    感谢您的帮助。

    因为其中一行没有定义主键-这是您应该立即解决的第一个问题!每个表都需要有一个适当的主键-没有讨论您是否使用自动递增字段?如果是这样,您可能需要在插入后“重新读取”数据集,或者您可以在客户端使用dup密钥。
    contentType: "application/json; charset=utf-8", 
    
    batch: true
    
            parameterMap: function(options, operation) {
                if (operation !== "read" && options) {
                    return JSON.stringify(options.models);
                }
    
            }