Ajax 如何在Datatable.net core中编辑行
我尝试用.net core更新数据表中的一行。Datatable显示数据并有一个新的/删除按钮。但是当我试图编辑一行时,我无法让它工作 这里是mi index.cshtml。谢谢Ajax 如何在Datatable.net core中编辑行,ajax,asp.net-core,.net-core,datatables,Ajax,Asp.net Core,.net Core,Datatables,我尝试用.net core更新数据表中的一行。Datatable显示数据并有一个新的/删除按钮。但是当我试图编辑一行时,我无法让它工作 这里是mi index.cshtml。谢谢 “ajax”:{ “url”:“./LoadIntervaloTrabajo”, “类型”:“职位”, “数据”:{“codigo”:@Model.codigo}, “数据类型”:“json” }, “栏目”:[ {“data”:“horario”,“autowidth”:true}, {“data”:“codigo”
“ajax”:{
“url”:“./LoadIntervaloTrabajo”,
“类型”:“职位”,
“数据”:{“codigo”:@Model.codigo},
“数据类型”:“json”
},
“栏目”:[
{“data”:“horario”,“autowidth”:true},
{“data”:“codigo”,“autowidth”:true},
{“data”:“description”,“autowidth”:true},
{“data”:“horainicio”,“autowidth”:true},
{“data”:“duracion”,“autowidth”:true},
{“data”:“cortentrada”,“autowidth”:true},
{“数据”:“cortintermedia”,“autowidth”:true},
{“data”:“cortsalida”,“autowidth”:true},
{“呈现”:函数(数据、类型、行){
返回“”;
}
},
函数编辑数据(codigo){
变量表=$(“#customerDatatable”).DataTable();
var r=table.rows(“.selected”).nodes()[0];
if($(table.buttons(“.editButton”)[0].node.find(“.span”).text()=“Cancel”){
$(r).子项(“td”)。每个(功能(i,it){
如果(i>0){
var od=table.cells(it.data()[0];
$(it).html(od);
}
});
设置按钮(“取消”);
}否则{
$(r).子项(“td”)。每个(功能(i,it){
如果(i>0){
var h=$(“”);
h、 val(it.innerText);
$(it).html(h);
}
});
设置按钮(“编辑”);
}
我尝试用.net core更新数据表中的一行
要实现行更新功能,可以参考以下代码段
渲染用于更新最后一列中的行的两个按钮
测试结果
"columns": [
{
"data": "horario", "autowidth": true
},
{ "data": "codigo", "autowidth": true },
{ "data": "descripcion", "autowidth": true },
{ "data": "horainicio", "autowidth": true },
{ "data": "duracion", "autowidth": true },
{ "data": "cortentrada", "autowidth": true },
{ "data": "cortintermedia", "autowidth": true },
{ "data": "cortsalida", "autowidth": true },
{
"render": function (data, type, row) { return "<a href='#' class='btn btn-info' onclick = EditData(this); >Editar</a><a href='#' class='btn btn-info btn-hidden' onclick = UpdateData(this); >Updatear</a>"; }
}
]
function EditData(btnedit) {
//find current row
var $row = $(btnedit).parent().parent();
var $tds = $row.find("td").not(':nth-child(2)').not(':last');
$.each($tds, function (i, el) {
var txt = $(this).text();
$(this).html("").append("<input type='text' value=\"" + txt + "\">");
});
$(btnedit).siblings("a").removeClass("btn-hidden");
$(btnedit).addClass("btn-hidden");
}
function UpdateData(btnupdate) {
var $row = $(btnupdate).parent().parent();
var horario = $row.find("td:nth-child(1)").find("input").val();
var codigo = $row.find("td:nth-child(2)").text();
var descripcion = $row.find("td:nth-child(3)").find("input").val();
var horainicio = $row.find("td:nth-child(4)").find("input").val();
var duracion = $row.find("td:nth-child(5)").find("input").val();
var cortentrada = $row.find("td:nth-child(6)").find("input").val();
var cortintermedia = $row.find("td:nth-child(7)").find("input").val();
var cortsalida = $row.find("td:nth-child(8)").find("input").val();
var data_for_update = { "horario": horario, "codigo": codigo, "descripcion": descripcion, "horainicio": horainicio, "duracion": duracion, "cortentrada": cortentrada, "cortintermedia": cortintermedia, "cortsalida": cortsalida };
//console.log(data_for_update);
//make request to update data
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: "/{controller_name_here}/Update",
data: JSON.stringify(data_for_update),
success: function (json) {
console.log(json);
var $tds = $row.find("td").not(':nth-child(2)').not(':last');
$.each($tds, function (i, el) {
var txt = $(this).find("input").val()
$(this).html(txt);
});
$(btnupdate).siblings("a").removeClass("btn-hidden");
$(btnupdate).addClass("btn-hidden");
},
//...
});
}
.btn-hidden{
display:none;
}