var InitiateEditableDataTable = function () {bootstrap
return { init: function () { //Datatable Initiating var oTable = $('#editabledatatable').dataTable({ "aLengthMenu": [ [5, 15, 20, 100, -1], [5, 15, 20, 100, "All"] ], "iDisplayLength": 5, "sPaginationType": "bootstrap", "sDom": "Tflt<'row DTTTFooter'<'col-sm-6'i><'col-sm-6'p>>", "oTableTools": { "aButtons": [ "copy", "print", { "sExtends": "collection", "sButtonText": "Save <i class=\"fa fa-angle-down\"></i>", "aButtons": ["csv", "xls", "pdf"] }], "sSwfPath": "assets/swf/copy_csv_xls_pdf.swf" }, "language": { "search": "", "sLengthMenu": "_MENU_", "oPaginate": { "sPrevious": "Prev", "sNext": "Next" } }, "aoColumns": [ null, null, null, null, { "bSortable": false } ] }); var isEditing = null; //Add New Row $('#editabledatatable_new').click(function (e) { e.preventDefault(); var aiNew = oTable.fnAddData(['', '', '', '', '<a href="#" class="btn btn-success btn-xs save"><i class="fa fa-edit"></i> Save</a> <a href="#" class="btn btn-warning btn-xs cancel"><i class="fa fa-times"></i> Cancel</a>' ]); var nRow = oTable.fnGetNodes(aiNew[0]); editRow(oTable, nRow); isEditing = nRow; }); //Delete an Existing Row $('#editabledatatable').on("click", 'a.delete', function (e) { e.preventDefault(); if (confirm("Are You Sure To Delete This Row?") == false) { return; } var nRow = $(this).parents('tr')[0]; oTable.fnDeleteRow(nRow); alert("Row Has Been Deleted!"); }); //Cancel Editing or Adding a Row $('#editabledatatable').on("click", 'a.cancel', function (e) { e.preventDefault(); if ($(this).attr("data-mode") == "new") { var nRow = $(this).parents('tr')[0]; oTable.fnDeleteRow(nRow); } else { restoreRow(oTable, isEditing); isEditing = null; } }); //Edit A Row $('#editabledatatable').on("click", 'a.edit', function (e) { e.preventDefault(); var nRow = $(this).parents('tr')[0]; if (isEditing !== null && isEditing != nRow) { restoreRow(oTable, isEditing); editRow(oTable, nRow); isEditing = nRow; } else { editRow(oTable, nRow); isEditing = nRow; } }); //Save an Editing Row $('#editabledatatable').on("click", 'a.save', function (e) { e.preventDefault(); if (this.innerHTML.indexOf("Save") >= 0) { saveRow(oTable, isEditing); isEditing = null; //Some Code to Highlight Updated Row } }); function restoreRow(oTable, nRow) { var aData = oTable.fnGetData(nRow); var jqTds = $('>td', nRow); for (var i = 0, iLen = jqTds.length; i < iLen; i++) { oTable.fnUpdate(aData[i], nRow, i, false); } oTable.fnDraw(); } function editRow(oTable, nRow) { var aData = oTable.fnGetData(nRow); var jqTds = $('>td', nRow); jqTds[0].innerHTML = '<input type="text" class="form-control input-small" value="' + aData[0] + '">'; jqTds[1].innerHTML = '<input type="text" class="form-control input-small" value="' + aData[1] + '">'; jqTds[2].innerHTML = '<input type="text" class="form-control input-small" value="' + aData[2] + '">'; jqTds[3].innerHTML = '<select id="e1" style="width:50%;"><option value="'+ aData[3] +'" />Alabama</select>'; jqTds[4].innerHTML = '<a href="#" class="btn btn-success btn-xs save"><i class="fa fa-save"></i> Save</a> <a href="#" class="btn btn-warning btn-xs cancel"><i class="fa fa-times"></i> Cancel</a>'; } function saveRow(oTable, nRow) { var jqInputs = $('input', nRow); oTable.fnUpdate(jqInputs[0].value, nRow, 0, false); oTable.fnUpdate(jqInputs[1].value, nRow, 1, false); oTable.fnUpdate(jqInputs[2].value, nRow, 2, false); oTable.fnUpdate(jqInputs[3].value, nRow, 3, false); oTable.fnUpdate('<a href="#" class="btn btn-info btn-xs edit"><i class="fa fa-edit"></i> Edit</a> <a href="#" class="btn btn-danger btn-xs delete"><i class="fa fa-trash-o"></i> Delete</a>', nRow, 4, false); oTable.fnDraw(); } function cancelEditRow(oTable, nRow) { var jqInputs = $('input', nRow); oTable.fnUpdate(jqInputs[0].value, nRow, 0, false); oTable.fnUpdate(jqInputs[1].value, nRow, 1, false); oTable.fnUpdate(jqInputs[2].value, nRow, 2, false); oTable.fnUpdate(jqInputs[3].value, nRow, 3, false); oTable.fnUpdate('<a href="#" class="btn btn-info btn-xs edit"><i class="fa fa-edit"></i> Edit</a> <a href="#" class="btn btn-danger btn-xs delete"><i class="fa fa-trash-o"></i> Delete</a>', nRow, 4, false); oTable.fnDraw(); } } }; }();