jquery - How to update row in the table when data is updated using ajax mvc -
i have data table , data displayed in have add edit , delete option once new data added based on response appending row table
getserverdata("supplier/addsupplier/", supplierdetails, function (data) { if (data != null) { var row = ""; var address = data.address; var area = data.area; var supplierid = data.supplierid; var suppliername = data.suppliername; var email = data.email; } row += "<tr><td>" + supplierid + "</td><td>" + suppliername + "</td><td>" + address + "</td><td>" + area + "</td><td>" + email + "</td><td><i class='tbl_edit_btn fa fa-edit editsupplier' onclick=\"editsupplier(" + supplierid + ")\"></i><i class='tbl_del_btn fa fa-trash' data-id=" + supplierid + "></i></td></tr>" $('#suplierlistbody').append(row); });
if delete row removing tr based on responce removeing row
var url = "deletesupplier"; $('.deletesupplier').click(function () { var row = $(this).closest('tr'); $.post(url, { id: $(this).data('id') }, function (response) { if (response) { row.remove(); } }).fail(function (response) { alert("delete failed"); }); });
now want edit row table have icon @ last column once click go data base fetches data , binds html form
function editsupplier(supplierid) { getserverdata("supplier/getsupplierbyid/" + supplierid, null, function (data) { $('#supplier_id').val(data.supplierid); $('#supplier_name').val(data.suppliername); $('#supplier_address').val(data.address); $('#supplier_area').val(data.area); }); }
and have button below form
<button type="button" id="update">update</button>
on update click iam collecting values form text box , passing controller updates database if refresh page table updated want out refresh
$(document).on('click', '#updatesupplier', function () { var supplierid = $('#supplier_id').val(); var suppliername = $('#supplier_name').val(); var address = $('#supplier_address').val(); var area = $('#supplier_area').val(); var supplierdetails = { "supplierid":supplierid, "suppliername": suppliername, "address": address, "area": area, } getserverdata("supplier/updatesupplier", supplierdetails, function(data){ // here iam getting updated data show modify table row });
here table
<table class="table " id="suppliertable"> <thead> <td>s.no</td> <th>supplier name</th> <th>address</th> <th>area</th> <th>e-mail</th> <th width="100">action</th> </thead> <tbody id="suplierlistbody"> @foreach (var items in model) { <tr> <td>@items.supplierid</td> <td>@items.suppliername</td> <td>@items.address</td> <td>@items.area</td> <td>@items.email</td> <td> <i class="tbl_edit_btn fa fa-edit editsupplier" onclick="editsupplier(@items.supplierid)"></i> <i class="tbl_del_btn fa fa-trash deletesupplier" data-id="(@items.supplierid)"></i> </td> </tr> } </table>
how can update particular row latest data... thanks
updated, try below:
getserverdata("supplier/updatesupplier", supplierdetails, function(data){ var supplierselector = "td:contains('"+ data.supplierid + "')"; //find , save parent row variable using .closest() function $supplierrow = $(supplierselector).closest("tr"); //update name 2nd td element $supplierrow.find("td:nth-child(2)").text(data.suppliername); //update address 3rd td element $supplierrow.find("td:nth-child(3)").text(data.address); //update area 4th td element $supplierrow.find("td:nth-child(4)").text(data.area); //update email 5th td element $supplierrow.find("td:nth-child(5)").text(data.email); });
first :contains selector used find td
has updated supplierid
, after .closest() method used find nearest parent tr
element. updates .find() used find correct td
element , .text() updates supplier latest data. here's useful link in relation table selectors.
note haven't tested above code, hope above helps latest data updates on table
elements.
Comments
Post a Comment