1

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

一切正常,除了我现在唯一的问题是以某种方式捕获用户输入的新值,并且 onblur 通过服务器端发送新值。发送过来的值始终是原始值,而不是用户输入的值。注意:我使用 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 变量?始终传递的值始终是原始值,而不是用户输入的新值。

有没有解决的办法?

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

4

1 回答 1

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");
    }
}
于 2013-07-25T14:07:27.553 回答