datatable表编辑

结合项目需要,写了一个datatable表编辑的js

var nEditing = null;
var nNew = false;
function restoreRow(oTable, nRow) {
    var aData = oTable.$Table.fnGetData(nRow);

//console.log(aData);
    //oTable.fnUpdate(aData["UPDATED"], nRow, 3, false);

oTable.fnDraw();
}

//dataTable编辑行
function editRow2(oTbale, nRow) {
    var aData = oTbale.$Table.fnGetData(nRow);
    var jqTds = $(‘>td‘, nRow);
    jqTds[1].innerHTML = groupHtml;
    jqTds[2].innerHTML = ‘<a class="edit" href="javascript:void(0);">Save</a>‘;
    jqTds[3].innerHTML = ‘<a class="cancel" href="javascript:void(0);">Cancel</a>‘;
    $("td>select").select2({
        tags: true
    });
    if (!!aData.ASSIGNPERSON) {
        var tempGroupVals = [];
        aData.ASSIGNPERSON.split(",").forEach(function (e, i) {
            $(nRow).find("option").each(function () {
                if (e === $(this).text()) {
                    tempGroupVals.push($(this).val());
                }
            });
        });
        $(nRow).find("select").select2().val(tempGroupVals).trigger("change");
    }
    //nNew = true;
}

//保存行
function saveRow2(oTbale, nRow) {
    if (!!nRow) {
        oTable = oTbale.$Table;
        var tempGroups = "";
        $(nRow).find("li").each(function () {
            if (!!$(this).attr("title")) {
                tempGroups += "," + $(this).attr("title");
            }
        });
        tempGroups = tempGroups.substr(1);
        console.log($("#sel_menu2").select2().val());
        //oTable.fnUpdate(tempGroups, nRow, 1, false);
        oTable.fnUpdate(tempGroups, nRow, 2, false);
        oTable.fnUpdate(‘<a class="edit" href="javascript:void(0);">Edit</a>‘, nRow, 3, false);
        oTable.fnUpdate(‘<a class="delete" href="javascript:void(0);">Delete</a>‘, nRow, 4, false);
        oTable.fnDraw();
    }
}

//撤消该行
function cancelEditRow(oTable, nRow) {
    console.log(oTable);
    var jqInputs = $(‘input‘, nRow);
    oTable.$Table.fnUpdate(jqInputs[0].value, nRow, 0, false);
    oTable.$Table.fnUpdate(jqInputs[1].value, nRow, 1, false);
    oTable.$Table.fnUpdate(jqInputs[2].value, nRow, 2, false);
    oTable.$Table.fnUpdate(‘<a class="edit" href="">Edit</a>‘, nRow, 3, false);
    oTable.$Table.fnUpdate(‘<a class="delete" href="">Delete</a>‘, nRow, 4, false);
    oTable.$Table.fnDraw();
}

function ClickListen(oTable) {
    oTable.$Table.on("click", ".edit", function (e) {
        e.preventDefault();
        /* Get the row as a parent of the link that was clicked on */
        var nRow = $(this).parents(‘tr‘)[0];
        //console.log("1", this.innerHTML);
        //console.log("nRow", nRow);
        if (nEditing !== null && nEditing !== nRow) {
            /* Currently editing - but not this row - restore the old before continuing to edit mode */
            restoreRow(oTable, nEditing);
            editRow2(oTable, nRow);
            nEditing = nRow;
        } else if (nEditing == nRow && this.innerHTML === "Save") {
            /* Editing this row and want to save it */
            saveRow2(oTable, nEditing);
            nEditing = null;
            alert("Updated! Do not forget to do some ajax to sync with backend :)");
        } else {
            /* No edit in progress - let‘s start one */
            editRow2(oTable, nRow);
            nEditing = nRow;
        }
    });
    oTable.$Table.on(‘click‘, ‘.delete‘, function (e) {
        e.preventDefault();

if (confirm("Are you sure to delete this row ?") === false) {
            return;
        }

var nRow = $(this).parents(‘tr‘)[0];
        oTable.$Table.fnDeleteRow(nRow);
        alert("Deleted! Do not forget to do some ajax to sync with backend :)");
    });
    oTable.$Table.on(‘click‘, ‘.cancel‘, function (e) {
        console.log(nNew);
        e.preventDefault();
        if (nNew) {
            oTable.$Table.fnDeleteRow(nEditing);
            nEditing = null;
            nNew = false;
        } else {
            //restoreRow(oTable, nEditing);
            cancelEditRow(oTable, nEditing);
            nEditing = null;
        }
    });
}

时间: 2024-12-30 23:25:06

datatable表编辑的相关文章

AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)

/* * 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用. * * ------------------------------------------------------------------- * * 使用前提:已搭建好AE的GIS基本框架,包括TOC.mapcontrol.toolbar拖控件,mxd.shp文件载入显示,查看图层属性表等 * * --------------------------------------------------

6giis6.0下载 R如此众多的注册表编辑软件

总之,大势至共享文件审计系统是国内唯一可以有效监控共享文件的访问操作记录的软件,可以有效记录共享文件的读取.修改.删除.剪切.重命名等,有效保护服务器共享文件的安全,保护单位的商业机密和无形资产. 与HyperSnap-DX同公司出品的贴心程序,可用来使用于打开旧文件.另存新文件或按浏览钮浏览资料夹时之对话方块.设置自己惯用的资料夹位置,也可自行变更对话方块的大小,对于文件的操作管理上大大的提升方便性. 根据IP信息记录访客客户号,可以查询.浏览或统计分析,作为一套稳定的客户档案.管理人员可以随

禁用开启注册表编辑功能

禁用.开启注册表编辑功能. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System DisableRegistryTools"的DWORD键值,双击打开并修改数据数值为"1",表示禁用注册表工具,如果想恢复则改为"0".但是我们禁用了之后我们自己也没法继续打开了,我们可以通过组策略的方式打开,运行gpedit.msc,在管理模板的系统里面找到禁用注册表编辑的文件

C# 将DataTable表中的数据批量插入到数据库表中的方法

C#中有时候需要将内存中的数据批量插入到数据库表中,使用for循环进行批量插入不但耗时而且会频繁操作数据库. 针对数据量很少的可以使用for循环插入,但是针对于数据量大的则不推荐使用for循环插入,推荐使用sql的块处理插入. 块处理不但耗时少而且不会频繁对数据库进行操作,只是需要注意的一点是DataTable中的列必须与表的列完全一致. 如下代码是批量插入的一个函数,自测可用. 1 #region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 2 /// <summa

把dataTable表批量的写入数据库

connectionStr:链接字符串:dataTableName数据库中的表:sourceDataTable dataTable的名称 public static void SqlBulkCopyByDataTable(string connectionStr, string dataTableName, DataTable sourceDataTable, int batchSize = 100000) { using (System.Data.SqlClient.SqlConnection

PCB MS SQL 存储过程(CLR) 实现Json转DataTable表的方法

一.准备需转为DataTable的json字符串 原json字符串数据 [{"TechName":"ECN","TechNo":"EC_01","id":"1"},{"TechName":"流程指示","TechNo":"PI_01","id":"2"},{"

DataTable表连接

public static System.Data.DataTable TableJoin(System.Data.DataTable dt, System.Data.DataTable dtDetail, string[] parentFieldName, string[] relationFieldName, bool isInnerJoin, string relationName = "") { System.Data.DataTable joinDt = new System

DataTable表的遍历

1. for (int i = 0; i < dt.Rows.Count; i++)            {                for (int j = 0; j < dt.Columns.Count; j++)                {                    sb.Append(dt.Rows[i][j] + "   ");                }                sb.AppendLine();       

C# DataTable的Distinct解决方案及表的复制

DataTable的Distinct DataTable dataTable; DataView dataView = dataTable.DefaultView; DataTable dataTableDistinct = dataView.ToTable(true,"FieldName1","FieldName2","...");//注:其中ToTable()的第一个参数为是否DISTINCT DataTable 表的复制 DataTable