Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过选中datatable中的复选框发送多行,并将其发送到控制器进行更新?_Javascript_C#_Ajax_Asp.net Mvc_Datatable - Fatal编程技术网

Javascript 如何通过选中datatable中的复选框发送多行,并将其发送到控制器进行更新?

Javascript 如何通过选中datatable中的复选框发送多行,并将其发送到控制器进行更新?,javascript,c#,ajax,asp.net-mvc,datatable,Javascript,C#,Ajax,Asp.net Mvc,Datatable,我在ASP.NETMVC工作。 我有一个带有复选框选项的datatable,可以选择多行发送给控制器进行批量更新。因为,我有两个不同的功能,在同一个视图中有两个不同的按钮,所以我不能使用表单提交方法 我正在尝试通过Ajax方法发送。但是,无法将所选行发送到数组中 我在下面尝试的代码: 表: 控制器: 要更新的按钮: 我尝试发送数据的Javascript: 如何解决这个问题?我只想要选中复选框的已发送行数据。请提供帮助。从您的javascript来看,我认为您的主要问题是您没有将发送到控制器的数据

我在ASP.NETMVC工作。 我有一个带有复选框选项的datatable,可以选择多行发送给控制器进行批量更新。因为,我有两个不同的功能,在同一个视图中有两个不同的按钮,所以我不能使用表单提交方法

我正在尝试通过Ajax方法发送。但是,无法将所选行发送到数组中

我在下面尝试的代码: 表:

控制器:

要更新的按钮:

我尝试发送数据的Javascript:


如何解决这个问题?我只想要选中复选框的已发送行数据。请提供帮助。

从您的javascript来看,我认为您的主要问题是您没有将发送到控制器的数据映射到更新操作方法所期望的对象,因此模型绑定无法工作

例如,假设您的StatusVM对象如下所示:

public class StatusVM
{
    public int Id {get;set;}
    public string Name {get;set;}
}
在javascript中,您需要将html对象中的项目映射到该对象,因此创建一个表示该对象的对象,如下例所示:

var cData = new Array();
for(var i = 0; i < rowData.length; i++){

    cData.push(obj);
}


function GetData() {
    var table = $('#tblStatus').DataTable();
    if ($('[name="chkBox"]:checked').length <= 0) {
        alert('Please select minimum one data');
    }
    else {
         var CData = new Array();
        $('[name="chkBox"]:checked').each(function (data) {
             var rowData =table.row(this).data();

        var obj = {
           Id: rowData.Id,
           Name: rowdata.Name
        };
        CData.push(obj );
        });
           $.ajax({
            type: "POST",
            url: "/Test/Update",
            contentType: "application/json;",
            headers: { 'RequestVerificationToken': gettoken() },
            data: CData,
        });
    }
}

希望有帮助。

在视图中创建tableDOM时,row.data将返回row的值数组。在您的情况下,第1行数据将是[Data1,Data2,Data3…]。 在这种情况下,必须在每个函数回调中创建类似StatusVM的对象

$('[name="chkBox"]:checked').each(function(data) {
  var rowData = table.row($(this).parents('tr')).data();
  var obj = {
    "col1": rowData[0],
    "col2": rowData[1],
    "col3": rowData[2]
  }
  CData.push(obj);
});
如果需要行返回对象,则必须使用JSON绑定DataTable

正如文件所说:

行的数据源的数据源对象。如果使用源于DOM的数据,这将是一个数组,否则将是用于用数据填充表的数组/对象/实例

 function GetData() {
        var table = $('#tblStatus').DataTable();
        if ($('[name="chkBox"]:checked').length <= 0) {
            alert('Please select minimum one data');
        }
        else {
             var CData = new Array();
            var dd;//= $('[name="chkBox"]:checked').toArray();
            $('[name="chkBox"]:checked').each(function (data) {
                 var rowData =table.row(this).data();
            CData.push(rowData);
            });
               $.ajax({
                type: "POST",
                url: "/Test/Update",
                contentType: "application/json;",
                headers: { 'RequestVerificationToken': gettoken() },
                data: JSON.stringify({ data1: CData }),
            });
        }
    }
public class StatusVM
{
    public int Id {get;set;}
    public string Name {get;set;}
}
var cData = new Array();
for(var i = 0; i < rowData.length; i++){

    cData.push(obj);
}


function GetData() {
    var table = $('#tblStatus').DataTable();
    if ($('[name="chkBox"]:checked').length <= 0) {
        alert('Please select minimum one data');
    }
    else {
         var CData = new Array();
        $('[name="chkBox"]:checked').each(function (data) {
             var rowData =table.row(this).data();

        var obj = {
           Id: rowData.Id,
           Name: rowdata.Name
        };
        CData.push(obj );
        });
           $.ajax({
            type: "POST",
            url: "/Test/Update",
            contentType: "application/json;",
            headers: { 'RequestVerificationToken': gettoken() },
            data: CData,
        });
    }
}
$('[name="chkBox"]:checked').each(function(data) {
  var rowData = table.row($(this).parents('tr')).data();
  var obj = {
    "col1": rowData[0],
    "col2": rowData[1],
    "col3": rowData[2]
  }
  CData.push(obj);
});