【问题标题】:How to use HTTP POST request in ASP.NET MVC igGrid wrapper?如何在 ASP.NET MVC igGrid 包装器中使用 HTTP POST 请求?
【发布时间】:2018-10-18 05:16:25
【问题描述】:

通过指定 requestType 属性在 igGrid 中使用 ajax post 调用使用 HTTP POST 方法似乎很简单。但是,我无法找到任何方法来为 igGrid(Infragistics 16.2)在 ASP.NET MVC 包装器中指定 requestType。

@(Html.Infragistics()
        .Grid(Model)
        .ID("transactionGrid")
        .PrimaryKey("ID")
        .Height("550px")
        .Width("100%")
        .AutoGenerateColumns(false)
        .AutoGenerateLayouts(false)
        .Columns(column =>
        {
            column.For(x => x.ID).HeaderText("Broker");
            column.For(x => x.Category).HeaderText("Category");
            //column.For(x => x.BrokerName).HeaderText("Broker");
            column.For(x => x.ParAmount).HeaderText("Par").Format("N2");
            column.For(x => x.CommissionAmount).HeaderText("Commission").Format("N2");
        })
        .Features(features =>
        {
            features.Sorting().Type(OpType.Local);
            features.Filtering().Type(OpType.Local);
            features.Summaries()
                .Type(OpType.Local).CalculateRenderMode(SummaryCalculateRenderMode.OnSelect)
                .ColumnSettings(cs =>
                {
                    cs.ColumnSetting().ColumnKey("CommissionAmount").SummaryOperands(so =>
                    {
                        so.SummaryOperand().Type(SummaryFunction.Sum).Active(true);
                    });
                    cs.ColumnSetting().ColumnKey("ParAmount").SummaryOperands(so =>
                    {
                        so.SummaryOperand().Type(SummaryFunction.Sum).Active(true);
                    });
                    cs.ColumnSetting().ColumnKey("Category").AllowSummaries(false);
                    cs.ColumnSetting().ColumnKey("ID").AllowSummaries(false);
                });
        })
        .DataSourceUrl(Url.Action("GetTransactions"))
        .DataBind()
        .Render()
    )

【问题讨论】:

    标签: asp.net-mvc infragistics ignite-ui iggrid


    【解决方案1】:

    您仍然可以通过网格原型设置它:

    $.ui.igGrid.prototype.requestType = "POST"

    在网格初始化代码之前添加。

    它没有被公开的原因是自动化的远程操作,如排序/过滤/分页等,仅适用于假设 GET 请求的 URL 中编码的参数。如果你自己处理远程操作,也就是说你没有用GridDataSourceActionAttribute装饰你的控制器方法,你没有理由不能通过上述原型更改来更改请求类型并读取和处理查询来自请求正文。

    希望这会有所帮助!

    【讨论】:

    • 但是,关键是我想在 MVC igGrid 包装器中设置请求类型,而不是在 javascript igGrid 中。我为获取网格数据而传入的信息太大而无法包含在 URL 中。因此,当网格将请求发送到服务器以获取网格数据时,我需要将其传递到请求的帖子正文中。使用单独的 AJAX 调用也是一种可能的选择,但我想看看这是否可以通过直接在 MVC igGrid 中使用 ig 远程数据源来实现
    【解决方案2】:

    我找到了答案: 由于 Grid ASP.NET MVC Wrappers 的主要用例是与远程网格功能的服务器端处理一起使用,因此“requestType”选项不会在包装器中公开,因为服务器端功能处理(GridModel.GetData 和GridDataSourceAction) 仅适用于 HTTP GET 方法。

    在 MVC Wrapper 中公开 requestType 是他们期待在未来版本的 Ignite UI for JavaScript 中实现的功能,但 Ignite UI 16.2 不支持,因此不会加入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 2023-03-20
      • 2021-09-27
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      相关资源
      最近更新 更多