【发布时间】:2017-12-26 17:51:20
【问题描述】:
我正在使用带有 MVC c# 的 jqgrid 免费版本(最新)。 我已经用我的数据设置了它,一切正常。我在页脚也确实有带有添加、编辑、删除功能的工具栏,单击该工具栏时会显示配置了所有表单元素的模式表单。我遇到的问题是:
-
如何让我的模态弹出窗口的所有表单元素 例如,我的 col 模型中有这个:
{ name: 'name', index: 'name', width: 90, sorttype: "text", editrules: { required: true }}当用户单击添加/编辑行时,我将名称作为弹出窗口中的字段之一。那么如何获取用户更新的这个字段值并将其传递给我的 mvc 控制器。
第二个问题是我可以通过哪种方法获取这些值以进行添加/编辑/删除?我想获取这些值并使用 ajax 来调用我的服务器端方法。
最后我应该如何在添加/编辑/删除之后刷新网格。
更新:我正在使用以下代码:
<script type="text/javascript">
$(function () {
"use strict";
var $grid = $("#list");
$grid.jqGrid({
url: '@Url.Action("GetData", "Home")',
datatype: "json",
mtype: 'Get',
colNames: ['Id', 'Name', 'Sex', 'Address'],
loadonce: true,
height: '100%',
autowidth: true,
colModel: [
{ name: 'uid', index: 'uid', editable: true, editrules: { required: true}},
{ name: 'name', index: 'name', editable: true, editrules: { required: true}},
{ name: 'sex', index: 'sex', editable: true, editrules: { required: true}},
{ name: 'address', index: 'address', editable: true, editrules: { required: true}}
],
cmTemplate: { autoResizable: true, editable: true },
autoResizing: { compact: true, resetWidthOrg: true },
iconSet: "fontAwesome",
rowNum: 10,
rowList: [5, 10, 20, "10000:All"],
viewrecords: true,
autoencode: true,
sortable: true,
pager: true,
rownumbers: true,
sortname: "uid",
sortorder: "desc",
pagerRightWidth: 150,
afterAddRow: function () {
},
afterSetRow: function () {
},
afterDelRow: function () {
},
inlineEditing: {
keys: true
},
formEditing: {
width: 310,
closeOnEscape: true,
closeAfterEdit: true,
savekey: [true, 13]
},
searching: {
loadFilterDefaults: false,
closeOnEscape: true,
searchOperators: true,
searchOnEnter: true
},
caption: "MyData"
}).jqGrid("navGrid")
.editGridRow("new", properties);
});
</script>
上面哪里可以使用 ajax 来调用我的 mvc 控制器:
$.ajax({
url: '/Home/AddNew',
type: 'POST',
async: false,
dataType: 'json',
processData: false,
data: {
//I try to use below code to get value but it returned null
uid: $('input#uid').val()
},
success: function (data) { }
});
【问题讨论】:
-
如果您发布更多您使用的完整 JavaScript 代码将会很有帮助。您是否使用
editurl选项和一些 URL 到您的控制器操作?您可以使用开发人员工具并检查网络选项卡以查看,在所有添加/编辑/删除操作的情况下,哪些信息将发送到editurlURL。最后,您应该对您的问题使用正确的标签。您可以检查jqgrid-asp.net 以查看它是用于商业 产品的。如果你使用“free jqGrid”,你应该替换它free-jqgrid。 -
嗨,oleg 我已经包含了我的代码并删除了标签。所以我再次想知道的是如何获取模态弹出窗口中的表单元素,获取这些事件并将其传递给我的 ajax 方法,然后如何刷新网格。谢谢
-
我添加了 editurl: '/Home/AddNew' 并且它确实有效,并且我得到了表单的所有参数以及操作。所以想检查除了表单参数之外我如何传递一个额外的参数。还有如何手动刷新网格。
-
有很多方法可以做到这一点。主要问题:我尝试保持与旧版本的 jqGrid(版本 不同回调。您使用当前的表单编辑并发布可以使用的附加参数,例如从
onclickSubmit回调或从 jqGridAddEditClickSubmit jQuery 事件返回的对象。例如,您可以在formEditing中包含onclickSubmit: function (options, postdata, editOrAdd) { return { myparam: $("#someInput").val() }; }。
标签: jquery jqgrid free-jqgrid