我需要在jqgrid中有一个发送按钮。因此,这意味着当我按下按钮时,我必须从我的控制器调用一个动作。我得到了删除按钮的代码。但我无法弄清楚如何通过我的行动发送其他数据:
gridComplete: function () {
var gr = jQuery('#list'); gr.setGridHeight("auto", true);
var ids = jQuery("#list").jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var cl = ids[i];
be = "<a href='#' style='height:25px;width:120px;' type='button' value='Slet' onclick=\"jQuery('#list').jqGrid('" + cl + "', @Url.Action("Action")); return false;\">Send</>";
jQuery("#list").jqGrid('setRowData', ids[i], { act: be });
}
},
答案 0 :(得分:1)
(在问题编辑和评论中回答。转换为社区维基答案。请参阅What is the appropriate action when the answer to a question is added to the question itself?)
OP写道:使用ajax请求解决了这个问题
var Send = function (rowId) { $.ajax({ mtype: "POST", url: '@Url.Action("Action")', data: { actionparameter: rowId }, async: false, cache: false }); }; gridComplete: function () { var gr = jQuery('#list'); gr.setGridHeight("auto", true); var ids = jQuery("#list").jqGrid('getDataIDs'); for (var i = 0; i < ids.length; i++) { var cl = ids[i]; var be = "<a href='#' value='Slet' onclick=\Send(" +cl + "); return false;\">Send</>"; jQuery("#list").jqGrid('setRowData', ids[i], { act: be }); } },
@Oleg写道:
你应该只
- 删除不需要的
async: false
。- 删除
cache: false
,因为您使用的是未缓存的“POST”。- 将
mtype: "POST"
替换为“POST”- 替换'= \发送('到'= \“发送('
- 醇>
您目前仅向服务器发送
rowId
且没有数据。您没有发布整个网格,所以我不知道您是否进行了本地网格编辑,并且应该另外发送修改后的数据。 如果查看
$.ajax
的文档,您将找到默认值为“GET”的参数类型。如果你写mtype: "POST"
,它将被忽略,如blabla: "HaHa"
。因此,HTTP GET
请求将在cache: false
有意义的地方发送,但“操作”中不允许“POST”。你真正想要的是type: "POST"
。顺便说一下,我建议你在你的问题中包含更多的代码。很多事情可能会更清楚,所有这些都会节省时间