【问题标题】:jqGrid modal edit save only changed data and marked edited row?jqGrid模态编辑只保存更改的数据并标记已编辑的行?
【发布时间】:2016-01-27 10:30:04
【问题描述】:

我使用 jqGrid 4.9.3-pre - Oleg 的免费 jqGrid。我使用模型窗口“表单编辑”编辑数据。数据从服务器获取。 datatype: "json" with loadonce: false, 不使用分页数据 我使用标准表。只需在 dblClickRow 上调用“表单编辑”即可。

    ondblClickRow: function(rowid) {
  $(this).jqGrid('setSelection', rowid)
           .jqGrid("editGridRow", rowid, { 
    recreateForm: true,
    width: 1000,
    height: "auto"});
    }

两个问题:

  1. 标记已编辑的行。
  2. 当您编辑数据并按下按钮保存时。如何将修改后的数据发送到服务器?

【问题讨论】:

  • 对不起,我不明白你的意思。您在“标记行”下的意思是什么?选择行?编辑时默认选中。一般来说,有很多选项可以开始表单编辑:navGridformatter: "actions"、在ondblClickRowonSelectRow 内部直接调用editGridRow,...可以使用不同的选择或多选选项。例如singleSelectClickMode: "selectonly" 可能会有所帮助。下一个问题:你写的是“保存”按钮。哪一个(来自navGridformatter: "actions"、您的自定义按钮……)。
  • 如何使用 jqGrid(datatype: "local"datatype: "json"loadonce: true,...)?您是否使用本地数据分页?没有实现“修改数据”的标准方法,特别是对于表单编辑和多页。为什么要在本地编辑多行?它在错误处理方面有很多缺点,我个人只使用单独保存每一行。
  • datatype: "json" with loadonce: false, 不使用数据分页
  • 您是要编辑多行,还是如果您写行是指编辑行的字段:列中的值?请插入更多代码。您可以在每个可编辑字段上注册 onfocus 事件,并在字段上设置 CSS,例如在编辑后。您可以将每一行的内容与原始内容进行比较并设置类。
  • 行编辑后,如果数据有修改,则做一个标记

标签: javascript jqgrid free-jqgrid


【解决方案1】:

我觉得你的问题很有趣,所以我创建了the demo,它演示了一种可能实现表单编辑的已编辑字段。结果如下图所示

对应的代码在beforeShowForm回调里面:

beforeShowForm: function ($form) {
    var $self = $(this),
        myMarker = "<span class='mychanged-item fa fa-lg fa-arrow-circle-o-left' style='display:none;border-radius:6px;background-color:LightGreen;'></span>";
    $form.find(".FormElement").focusout(function () {
        var colName = $(this).attr("name"),
            rowid = $form.find("input[name='" + $self[0].id + "_id" + "']")
                    .val(),
            oldValue = $self.jqGrid("getCell", rowid, colName),
            $myMarker = $(this).closest("td")
                        .next("td")
                        .find("span.mychanged-item");
        if ($(this).val() !== oldValue) {
            $myMarker.css("display", "");     // show
        } else {
            $myMarker.css("display", "none"); // hide
        }
    }).each(function () {
        $(this).closest("td")
            .after("<td style='width:15px'>" + myMarker + "</td>");
    });
}

【讨论】:

猜你喜欢
  • 2011-07-11
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多