jQuery按钮单击刷新jqGrid只触发一次

The*_*att 10 javascript asp.net-mvc jquery jqgrid

我有以下jQuery代码,我用来填充jqGrid.在第一次单击按钮时,它可以完美地发布到我的ASP.NET MVC页面.我的
问题是,当点击按钮时,任何其他点击超过第一个点击它似乎通过jquery代码,但它永远不会进入POST页面.有什么想法吗?

<script type="text/javascript">

        $(document).ready(function() {
            $('#btnSubmit').click(function() {

                /* Refreshes the grid */
                $("#list").jqGrid({
                    /* The controller action to get the grid data from */
                    url: '/CRA/AddPart',
                    data: { partNumber: "123"},
                    datatype: 'json',
                    mtype: 'GET',
                    /* Define the headers on the grid */
                    colNames: ['col1', 'col2', 'col3', 'col4'],
                    /* Define what fields the row columns come from */
                    colModel: [
                  { name: 'col1', index: 'invid', width: 290 },
                  { name: 'col2', index: 'invdate', width: 290 },
                  { name: 'col3', index: 'amount', width: 290, align: 'right' },
                  { name: 'col4', index: 'tax', width: 290, align: 'right'}],
                    height: 'auto',
                    rowNum: 10,
                    rowList: [10, 20, 30],
                    sortname: 'id',
                    sortorder: "desc",
                    viewrecords: true,
                    imgpath: '../../Scripts/jgrid/themes/steel/images',
                    caption: 'Core Return Authorization Contents:',
                    cellEdit: true
                });
            });
        });

    </script>
Run Code Online (Sandbox Code Playgroud)

Cra*_*ntz 21

网格没有重新加载的原因是你调用了错误的方法.jqGrid方法大致如下:

  1. 检查表以查看它是否已经是网格; 如果是这样,退出
  2. 将表格变成网格.
  3. 填充第一页数据.

因此,第二次调用该方法时,它不会执行任何操作,如步骤1所示.

相反,您应该调用$("#list").trigger("reloadGrid")第二次和所有后续点击.

现在,由于你在网格选项中的mtype,网格将进行GET,而不是POST.因此,如果POST来自按钮本身(换句话说,它是类型提交的输入),您应该返回true以指示提交应该像往常一样继续.


Lev*_*evi 6

这是解决方案:

<script type="text/javascript">
        var firstClick = true;
        $(document).ready(function() {
            $('#btnSubmit').click(function() {
                 if (!firstClick) {
                     $("#list").trigger("reloadGrid");
                 }
                 firstClick = false;
                /* Refreshes the grid */
                $("#list").jqGrid({
                    /* The controller action to get the grid data from */
                    url: '/CRA/AddPart',
                    data: { partNumber: "123"},
                    datatype: 'json',
                    mtype: 'GET',
                    /* Define the headers on the grid */
                    colNames: ['col1', 'col2', 'col3', 'col4'],
                    /* Define what fields the row columns come from */
                    colModel: [
                  { name: 'col1', index: 'invid', width: 290 },
                  { name: 'col2', index: 'invdate', width: 290 },
                  { name: 'col3', index: 'amount', width: 290, align: 'right' },
                  { name: 'col4', index: 'tax', width: 290, align: 'right'}],
                    height: 'auto',
                    rowNum: 10,
                    rowList: [10, 20, 30],
                    sortname: 'id',
                    sortorder: "desc",
                    viewrecords: true,
                    imgpath: '../../Scripts/jgrid/themes/steel/images',
                    caption: 'Core Return Authorization Contents:',
                    cellEdit: true
                });
            });
        });

    </script>
Run Code Online (Sandbox Code Playgroud)