我正在寻找可用于在表单提交时将kendo网格数据发布到控制器的代码。 请注意:我不能使用JSON帖子,因为我必须使用网格数据来创建excel文件。 我在jquery中尝试做什么:这里UserRegistrationForm是我的表单名称,其中包含网格。
$("#UserRegistrationForm").submit();
您能否建议我的控制器操作应该如何获取网格的值。
答案 0 :(得分:0)
为了实现这一点,我通常在提交表单之前使用网格数据生成隐藏字段。一个简单的方法:
$("#my-form").submit(function() {
var grid = $("#grid").data("kendoGrid"),
data = grid.dataSource.data(),
columns = grid.options.columns.map(function(item) { return item.field; }),
html = "";
for (var i = 0; i < data.length; i++) {
var fields = Object.keys(data[i]);
for (var n = 0; n < fields.length; n++) {
if (columns.indexOf(fields[n]) > -1) {
html+= "<input type='hidden' name='" + fields[n] + "[" + i + "]' value='" + data[i][fields[n]] + "' />";
}
}
}
$("#hidden-fields").empty().append(html);
});
这将导致div(#hidden-fields
)内部的一组隐藏字段也在表单内。它的名字将是这样的:
name="PropertyA[0]" value="valueOfA0"
name="PropertyB[0]" value="valueOfB0"
name="PropertyA[1]" value="valueOfA1"
name="PropertyB[1]" value="valueOfB1" and so on...
这很容易适合ASP.Net MVC列表参数,或者如果是ViewModel中的列表,只需在属性名称之前添加ViewModel的名称,例如: ViewModel.PropertyA[0]
。对于PHP,它将导致一个数组,例如$_POST["PropertyA"]
。我不确定其他API语言。