Kendo Grid能否为GET过程使用一个存储过程,为UPDATE成功使用另一个存储过程?

时间:2015-08-20 16:46:54

标签: kendo-ui kendo-grid

我的问题涉及使用Entity Framework / Kendo Grid和Web API 2控制器而不使用ASP.NET MVC / Razor。我的所有代码都是控制器中的C#或直接的HTML / JavaScript。

似乎Kendo Grid更适合直接使用表/视图而不是使用存储过程,我是否在此评估中更正?

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

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

在调试过程中,我看到网络检查器中出现了正确的行,但当我在POST方法中查看它在Web API 2控制器中的命中时,当我将鼠标悬停在对象上时,我甚至看不到任何值返回 - 这可能是另一个问题。

所以在核心,我的问题是......

  1. 是否可以在GET过程中将一个模型返回值发送到kendo网格,并且在批量保存期间,在此网格上的PUT / POST过程中返回完全不同的模型? Kendo Grids似乎更喜欢直接使用表格或视图,但我的政策是根本不能触及表格,我们不想使用视图,我们更喜欢完全存储过程。

  2. kendo网格在进行批量更新/保存时,即使它说它是批量的,它是否最终每行发送数据,所以一次一个?或者它是否真的将数据作为一个批次发送?

  3. 我们正在使用网格检索动态数据,行不会被修复,我已经使用模板稍微添加CSS类到包装单元格的元素,但这不会是足够灵活,但在说,我想知道是否有办法将数据从网格中拉出来,并将其扔到前端的一些隐藏表或值中,并在网格范围内有一个单独的保存按钮,保存用户新输入的值...?

  4. 提前谢谢

2 个答案:

答案 0 :(得分:0)

对于更新,使用存储过程非常容易。您将拥有类似

的方法
public ActionResult Products_Update([DataSourceRequest]DataSourceRequest request, Product product)

在这里,您可以删除所有属性,并将它们用作存储过程中的参数。

如果选择那么就很难避免使用表格。这是因为所有的分页和排序都基于一个基本上是一段sql的IQueryable。然后在扩展方法中给出分页和排序。你有这样的方法:

public ActionResult Products_Read([DataSourceRequest]DataSourceRequest request)

你可以在请求中捕获所有内容并手动处理排序和分页,但是使用视图或表格,您只需调用扩展方法并获取所有内容:

var result = products.ToDataSourceResult(request);

答案 1 :(得分:0)

所以,我想出了我的问题。

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

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

我认为这里的关键是[FromBody] IENumerable模型

2。)在Kendo Grid中,我需要确定......

我在DataSource中有这一行(我进行了READ,UPDATE和CREATE调用

contentType: "application/json; charset=utf-8", 

batch: true

        parameterMap: function(options, operation) {
            if (operation !== "read" && options) {
                return JSON.stringify(options.models);
            }

        }

这些东西的组合至少使我能够在Web API 2 Controller中看到模型和值。

感谢所有的帮助。