在 onblur 期间始终从可编辑的 DataTable 中检索旧值(但不是新值)

Posted

技术标签:

【中文标题】在 onblur 期间始终从可编辑的 DataTable 中检索旧值(但不是新值)【英文标题】:Always retrieving old value (but not new value) from editable DataTable during onblur 【发布时间】:2013-07-25 10:58:13 【问题描述】:

我目前正在尝试创建具有可编辑列的 DataTable。我能找到的最佳示例位于 DataTables 自己的网站上:http://www.datatables.net/release-datatables/examples/api/editable.html

除了我现在唯一的问题是以某种方式捕获用户输入的新值,并且 onblur 将新值发送到服务器端之外,一切都运行良好。发送过来的值始终是 original 值,而不是用户输入的 new 值。注意:我使用 handler.ashx 处理程序来检索新值在服务器端。

这是我显示数据表的代码:

$(document).ready(function() 

    var oTable = $('#example').dataTable(
        "sAjaxSource": "displayTable.ashx",
        "aoColumns": [
                 "sTitle": "examCode",
                 "sTitle": "division" ,
            ],
        "fnDrawCallback": function() 
            $('td').editable( 'handler.ashx', 
                "submitdata": function ( value, settings ) 
                    return 
                        examCode: $(this).parent().find(":first").text(),
                        columnPosition: oTable.fnGetPosition( this )[2],
                        newValue: value
                    ;
                ,
                onblur    : "submit",
             );
      


    );
);

这是我的 handler.ashx 代码:

public class Handler : IHttpHandler 

    public string editExamCode(HttpContext context)
    
        String newValue = context.Request.Form.Get("newValue");
    

注意到我“提交”了 onblur 并且值被传递给了 newValue 变量?始终传递的值始终是原始值,而不是用户输入的新值。

有没有办法解决这个问题?

谢谢 - 任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

我认为你根本不需要 newValue: value。

试试这个代码:

$(document).ready(function() 

    var oTable = $('#example').dataTable(
        "sAjaxSource": "displayTable.ashx",
        "aoColumns": [
                 "sTitle": "examCode",
                 "sTitle": "division" ,
            ],
        "fnDrawCallback": function() 
            $('td').editable( 'handler.ashx', 
                "submitdata": function ( value, settings ) 
                    return 
                        examCode: $(this).parent().find(":first").text(),
                        columnPosition: oTable.fnGetPosition( this )[2]
                    ;
                ,
                onblur    : "submit",
             );
      


    );
);

然后处理程序将只查找“值”变量:

public class Handler : IHttpHandler 

    public string editExamCode(HttpContext context)
    
        String newValue = context.Request.Form.Get("value");
    

【讨论】:

哇,好用。说真的,我昨天花了半天时间试图弄清楚这一点!

以上是关于在 onblur 期间始终从可编辑的 DataTable 中检索旧值(但不是新值)的主要内容,如果未能解决你的问题,请参考以下文章

将数据从可编辑表单保存到数据库

从可编辑网格中的存储中删除记录

如何从可执行文件中提取数组?

我们如何从可编辑的 Java 代码中生成 IntelliJ IDEA 中的序列图?

使用 Ext.grid.plugin.CellEditing 编辑后远程保存 onblur

jQuery Datepicker 验证类似于 onblur