【问题标题】:jqGrid inline edit functionalityjqGrid 内联编辑功能
【发布时间】:2012-11-02 11:44:07
【问题描述】:

我想将内联编辑功能分配给我的 jqGrid,即当用户单击特定行时,他应该能够编辑..

我正在关注这个 jQuery 代码的 url,但它不起作用,我也无法编辑

http://www.trirand.com/blog/jqgrid/jqgrid.html#

这是我的看法

<table id="list"></table>
</table>

JavaScript 代码:

  <script type="text/javascript">
    $(function () {
        var lastsel;
        jQuery("#list").jqGrid({
            url: '/Home/GetStudents/',
            datatype: 'json',
            mtype: 'POST',
            colNames: ['StudentID', 'FirstName', 'LastName', 'Email'],
            colModel: [
      { name: 'StudentID',sortable: false,key:true },
      { name: 'FirstName' },
      { name: 'LastName', sortable: false},
      { name: 'Email', width: 200,  sortable: false}],
      cmTemplate: {align: 'center', editable: true},
            pager: '#pager',
            width: 750,
            rowNum: 15,
            rowList: [5, 10, 20, 50],
            sortname: 'StudentID',
            sortorder: "asc",
            viewrecords: true,
            caption: ' My First JQgrid',
            onSelectRow: function (StudentID) {


                if (StudentID != lastsel) {

                    lastsel = StudentID;   
                    jQuery('#list').jqGrid('restoreRow', lastsel);
                    jQuery('#list').jqGrid('editRow', StudentID, true);


                }

            },

            editurl: '/Home/GetStudents/',
            caption: "Using events example"

        });
        jQuery("#list").jqGrid('navGrid', "#pager", { edit: false, add: false, del: false });
    });

</script>

这些是我的脚本,我添加了

<link href="/Content/jquery-ui-1.8.7.css" rel="stylesheet" type="text/css" />
<link href="/Content/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<link href="/Content/ui.multiselect.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>  
<script src="/Scripts/grid.locale-en.js" type="text/javascript"></script>
<script src="/Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="/Scripts/rowedex3.js" type="text/javascript"></script>

【问题讨论】:

    标签: jquery asp.net-mvc jqgrid


    【解决方案1】:

    首先你必须定义 jqGrid 的editurl 选项,该选项将负责处理服务器端的行保存。

    下一个问题:你应该在onSelectRow回调中定义lastsel变量来使用if。

    我建议您另外使用colModel 的默认属性,例如width: 150sortable: true(请参阅the documentation)。如果您需要重新定义网格列的一些默认设置,您可以使用cmTemplate(请参阅here)获取更多信息。您可以将colModel 从您的网格减少到以下内容

    colModel: [
            { name: 'StudentID', sortable: false, key: true },
            { name: 'FirstName' },
            { name: 'LastName', sortable: false },
            { name: 'Email', width: 200, sortable: false}],
    cmTemplate: {align: 'center', editable: true}
    

    此类更改将使代码更具可读性和易于维护。我添加了key: true 以确保jqGrid 使用列中的值作为rowid。取决于您返回的 JSON 数据的格式,它可能不是必需的,但我认为它使代码更具可读性和更易于维护。

    您还可以删除用于网格的&lt;table&gt; 元素的所有属性。

    另外出于性能原因,我建议您始终使用 jqGrid 的 gridview: true 选项并将 pager: jQuery('#pager') 替换为 pager: '#pager'

    【讨论】:

    • 我做了你上面提到的所有更改,但仍然无法正常工作,对于 editurl 我刚刚提到了一个示例 url,因为首先我需要编辑,然后我才能考虑进行更改
    • @beingfab:究竟是​​什么“不工作”?是否会启动内联编辑?在 Fiddler、Firebug 或 IE 或 Chrome 的开发者工具中是否可以看到保存行请求将被发送到服务器?
    • 不,我无法在单击行进行编辑时获取文本框,我在问题中制作和更新的新代码是否正确
    • @beingfab:我在您的代码中看不到错误。您是否尝试在onSelectRow 回调中设置断点?您使用哪个版本的 jqGrid?您使用非常旧的 jQuery 版本1.4.1 有点奇怪。您可以尝试使用 jQuery 1.7.2 和 jqGrid 的最新 (4.4.1) 版本。对于调试,使用jquery.jqGrid.src.js 而不是jquery.jqGrid.min.js 更实用。
    • 是的..非常感谢,在更改脚本后它现在工作正常,但问题是当我点击第二行时,第一行的编辑功能仍然相同...... ...当我单击一行时,其他行的编辑功能显示消失...注意-我没有添加 4.4.1 版本的 jqgrid,我正在搜索该版本以下载
    猜你喜欢
    • 2012-10-09
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多