Jqgrid自定义按钮

时间:2011-09-03 10:47:29

标签: jquery jqgrid

我需要在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 });
                  }
              },

1 个答案:

答案 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写道:

  

你应该只

     
      
  1. 删除不需要的async: false
  2.   
  3. 删除cache: false,因为您使用的是未缓存的“POST”。
  4.   
  5. mtype: "POST"替换为“POST”
  6.   
  7. 替换'= \发送('到'= \“发送('
  8.   
  9. 您目前仅向服务器发送rowId且没有数据。

         

    您没有发布整个网格,所以我不知道您是否进行了本地网格编辑,并且应该另外发送修改后的数据。   如果查看$.ajax的文档,您将找到默认值为“GET”的参数类型。如果你写mtype: "POST",它将被忽略,如blabla: "HaHa"。因此,HTTP GET请求将在cache: false有意义的地方发送,但“操作”中不允许“POST”。你真正想要的是type: "POST"。顺便说一下,我建议你在你的问题中包含更多的代码。很多事情可能会更清楚,所有这些都会节省时间

  10.