【问题标题】:Jqgrid adding new blank row in inlineNav styleJqgrid 以 inlineNav 样式添加新的空白行
【发布时间】:2012-03-22 18:44:18
【问题描述】:

我想在我的 JqGrid 下方创建 Add Edit SaveDelete 按钮。

<script type="text/javascript">
jQuery(document).ready(function () {
    var lastSel = 0;
    jQuery("#list").jqGrid({
        url: '/SpeakerJqgrid/GridData/',
        editurl: "/SpeakerJqgrid/MyEdit/",
        datatype: 'json',
        mtype: 'GET',
        colNames: ['SpeakerID', 'SpeakerName'],
        colModel: [
                      { name: 'SpeakerID', index: 'SpeakerID', width: 40, align: 'left', editable: true, edittype: "text", editoptions: { size: "35", maxlength: "50"} },
                      { name: 'SpeakerName', index: 'SpeakerName', width: 200, align: 'left', editable: true, edittype: "text", editoptions: { size: "35", maxlength: "50"} }
                 ],
        onSelectRow: function (id) {
            if (id && id !== lastSel) {
                jQuery('#list').restoreRow(lastSel);
                lastSel = id;
            }
            jQuery('#list').editRow(id, true);
        },
        loadComplete: function () {
            //alert("Load Complete");
        },
        addRowData: function (rowid, rdata, pos, src) {
            alert("addRowData");
            if (pos === 'afterSelected' || pos === 'beforeSelected') {
                if (typeof src === 'undefined' && this[0].p.selrow !== null) {
                    src = this[0].p.selrow;
                    pos = (pos === "afterSelected") ? 'after' : 'before';
                } else {
                    pos = (pos === "afterSelected") ? 'last' : 'first';
                }
            }
            return oldAddRowData.call(this, rowid, rdata, pos, src);
        },

        pager: jQuery('#pager'),
        rowNum: 10,
        rowList: [5, 10, 20, 50],
        sortname: 'SpeakerName',
        sortorder: "desc",
        viewrecords: true,            
        autowidth: true,
        autoheight: true,
        imgpath: '/scripts/themes/black-tie/images',
        caption: 'My first grid'
    })
    $("#list").jqGrid('navGrid', '#pager', {edit:false,add:false,del:false,refresh:false,search:false});
    $("#list").jqGrid('inlineNav', '#pager', {
        edittext: "Edit",
        addtext: "Add",
        savetext: "Save",
        canceltext: "Cancel",
        addParams: { position: "afterSelected" }
    });
    }); 
</script>

通过使用上面的代码,My Grid 向我显示名为 Add Edit SaveDelete 的按钮。
但是当我点击这些按钮时,什么问题都没有发生。

我的意思是我想创建当我点击添加或编辑按钮时会触发的事件。

我发现的大多数示例都是关于使用 modal form 添加新行的。但是我必须使用的是内联网格行添加样式。

您的建议将不胜感激。

【问题讨论】:

  • trirand.com/blog/jqgrid/jqgrid.html 行编辑 -> 左侧菜单中的自定义编辑
  • 感谢@laroslav 的建议。我在 Row Editing (new)--> Inline Navigator (new) 找到了。但是当我单击“+”按钮时,我仍然没有找到必须触发的 js 事件。
  • 在自定义编辑示例中,您可能会看到这些按钮附加到每一行,代码参见 gridComplete 事件
  • 对不起,在句首没有看到'below'这个词。

标签: c# jquery asp.net-mvc jqgrid


【解决方案1】:

首先没有回调函数addRowData。如果你想修改 方法 addRowData 以支持 'afterSelected' 或 'beforeSelected' 你应该按照我的建议从 the answerthis one 使用 the demo

现在谈谈您的主要问题。 inlineNav 方法在内部使用 addRoweditRow 方法。因此,如果用户单击由inlineNav 添加的“添加”或“编辑”按钮,则将调用addRoweditRow。您可以使用inlineNavaddParamseditParams 选项来更改addRoweditRow 的默认参数。如果您只需要指定您自己的回调函数,当用户单击添加或编辑按钮时将调用该回调函数,您可以使用以下代码:

$("#list").jqGrid('inlineNav', '#pager', {
    edittext: "Edit",
    addtext: "Add",
    savetext: "Save",
    canceltext: "Cancel",
    addParams: {
        position: "afterSelected",
        addRowParams: {
            // the parameters of editRow used to edit new row
            keys: true,
            oneditfunc: function (rowid) {
                alert("new row with rowid=" + rowid + " are added.");
            }
        }
    },
    editParams: {
        // the parameters of editRow
        key: true,
        oneditfunc: function (rowid) {
            alert("row with rowid=" + rowid + " is editing.");
        }
    }
});

此外,如果您需要使用inlineNav 的编辑按钮,您可能应该删除onSelectRow 回调的代码。

【讨论】:

  • 非常感谢@Oleg,最后,您的建议和代码解决了我的问题。
  • @Oleg:我的解决方案仅在位置:“afterSelected”被删除时才有效。为什么?
  • @SanthoshKumar:我想是因为您没有添加 addRowData 的修改版本(请参阅当前我的答案中引用的 the answer)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
相关资源
最近更新 更多