通过指定requestType属性,使用ajax post调用在igGrid中使用HTTP POST方法似乎很简单。但是,我无法在igGrid的ASP.NET MVC包装器中找到任何指定requestType的方法(Infragistics 16.2)。
@(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()
)
你仍然可以通过网格原型设置它:
$ .ui.igGrid.prototype.requestType =“POST”
在网格初始化代码之前添加了某个地方。
不暴露的原因是自动远程操作(例如排序/过滤/分页等)仅适用于URL中编码的参数,该参数假设GET请求。如果您自己处理远程操作,也就是说您没有使用GridDataSourceActionAttribute修改控制器方法,则没有理由不通过上述原型更改来更改请求类型,并从请求主体读取和处理查询。
希望这可以帮助!
我找到了答案:由于Grid ASP.NET MVC Wrappers主要用例是与服务器端处理远程网格功能一起使用,“requestType”选项未在包装器中公开,因为服务器端功能处理(GridModel.GetData和GridDataSourceAction)仅适用于HTTP GET方法。
在MVC Wrapper中公开requestType是他们期待在未来版本的Ignite UI for JavaScript中实现的,但Ignite UI 16.2不受支持,所以它不会进入它。