Javascript jqGrid modal edit是否仅保存更改的数据和标记的已编辑行?

Javascript jqGrid modal edit是否仅保存更改的数据和标记的已编辑行?,javascript,jqgrid,free-jqgrid,Javascript,Jqgrid,Free Jqgrid,我使用Oleg提供的jqGrid 4.9.3-pre-free jqGrid。我使用模型窗口“表单编辑”编辑数据。数据从服务器获取。 数据类型:“json”带loadonce:false,数据分页不使用 我用标准的桌子。只需在BlClickRow上调用“表单编辑” ondblClickRow: function(rowid) { $(this).jqGrid('setSelection', rowid) .jqGrid("editGridRow", rowid,

我使用Oleg提供的jqGrid 4.9.3-pre-free jqGrid。我使用模型窗口“表单编辑”编辑数据。数据从服务器获取。 数据类型:“json”loadonce:false数据分页不使用 我用标准的桌子。只需在BlClickRow上调用“表单编辑”

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

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

  • 我发现你的问题很有趣,所以我创建了一个,它演示了表单编辑的编辑字段的可能实现之一。结果如下图所示

    相应的代码在
    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>");
        });
    }
    
    beforeShowForm:函数($form){
    var$self=$(此),
    myMarker=“”;
    $form.find(“.FormElement”).focusout(函数(){
    var colName=$(this.attr(“name”),
    rowid=$form.find(“输入[name=”+$self[0].id+“_id”+“]”)
    .val(),
    oldValue=$self.jqGrid(“getCell”、rowid、colName),
    $myMarker=$(this).closest(“td”)
    .下一步(“td”)
    .find(“span.mychanged item”);
    if($(this).val()!==oldValue){
    $myMarker.css(“显示”、“显示”);//显示
    }否则{
    $myMarker.css(“显示”、“无”);//隐藏
    }
    }).每个(功能){
    $(此)。最近的(“td”)
    。在(“+myMarker+”)之后;
    });
    }
    
    我发现您的问题很有趣,因此我创建了一个,它演示了表单编辑的编辑字段的可能实现之一。结果如下图所示

    相应的代码在
    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>");
        });
    }
    
    beforeShowForm:函数($form){
    var$self=$(此),
    myMarker=“”;
    $form.find(“.FormElement”).focusout(函数(){
    var colName=$(this.attr(“name”),
    rowid=$form.find(“输入[name=”+$self[0].id+“_id”+“]”)
    .val(),
    oldValue=$self.jqGrid(“getCell”、rowid、colName),
    $myMarker=$(this).closest(“td”)
    .下一步(“td”)
    .find(“span.mychanged item”);
    if($(this).val()!==oldValue){
    $myMarker.css(“显示”、“显示”);//显示
    }否则{
    $myMarker.css(“显示”、“无”);//隐藏
    }
    }).每个(功能){
    $(此)。最近的(“td”)
    。在(“+myMarker+”)之后;
    });
    }
    
    对不起,我不明白你的意思。你在“划船”下面是什么意思?选择行?在编辑过程中,默认情况下会选中它。一般来说,有很多选项可以开始表单编辑:
    navGrid
    格式化程序:“操作”
    ,直接调用
    ondblClickRow
    内部的
    editGridRow
    ,或
    onsetrow
    ,。。。可以使用不同的选择或多选选项。例如
    singleSelectClickMode:“selectonly”
    可能会有所帮助。下一个问题:你写的是“保存”按钮。哪一个(来自
    navGrid
    formatter:“操作”
    ,您的自定义按钮,…)。您如何使用jqGrid(
    datatype:“本地”
    datatype:“json”
    loadonce:true
    ,…)?您是否使用数据的本地分页?没有实现“修改的数据”的标准方法,尤其是对于表单编辑和多页面。为什么要在本地编辑多行?它在错误处理方面有很多缺点,我个人只使用单独保存每一行。数据类型:“json”和loadonce:false,数据分页不使用是否要编辑多行,或者如果写入行,则表示编辑行的字段:列中的值?请插入更多代码。您可以在每个可编辑字段上注册onfocus事件,并在该字段上设置CSS,例如在编辑之后。您可以将每行的内容与原始内容和设置的类进行比较。编辑行后,如果数据已被修改,请进行标记抱歉,但我不明白您的意思。你在“划船”下面是什么意思?选择行?在编辑过程中,默认情况下会选中它。一般来说,有很多选项可以开始表单编辑:
    navGrid
    格式化程序:“操作”
    ,直接调用
    ondblClickRow
    内部的
    editGridRow
    ,或
    onsetrow
    ,。。。可以使用不同的选择或多选选项。例如
    singleSelectClickMode:“selectonly”
    可能会有所帮助。下一个问题:你写的是“保存”按钮。哪一个(来自
    navGrid
    formatter:“操作”
    ,您的自定义按钮,…)。您如何使用jqGrid(
    datatype:“本地”
    datatype:“json”
    loadonce:true
    ,…)?您是否使用数据的本地分页?没有实现“修改的数据”的标准方法,尤其是对于表单编辑和多页面。为什么要在本地编辑多行?它在错误处理方面有很多缺点,我个人只使用单独保存每一行。数据类型:“json”和loadonce:false,数据分页不使用是否要编辑多行,或者如果写入行,则表示编辑行的字段:列中的值?请插入更多代码。您可以在每个可编辑字段上注册onfocus事件,并在该字段上设置CSS,例如在编辑之后。您可以将每一行的内容与原始内容和设置的类进行比较。编辑行后,如果数据已被修改,则进行标记。请查看续行。请查看续行