【问题标题】:Insert a new row into DataTable在 DataTable 中插入新行
【发布时间】:2011-06-11 12:34:40
【问题描述】:

我有一个充满员工数据的数据表,例如..

Staff 1 - Day 1 - Total
Staff 1 - Day 2 - Total
Staff 1 - Day 3 - Total
Staff 2 - Day 1 - Total
Staff 2 - Day 2 - Total
Staff 2 - Day 3 - Total
Staff 2 - Day 4 - Total

我想修改一下,结果就是……

Staff 1 - Day 1 - Total
Staff 1 - Day 2 - Total
Staff 1 - Day 3 - Total
Total   -       - Total Value
Staff 2 - Day 1 - Total
Staff 2 - Day 2 - Total
Staff 2 - Day 3 - Total
Staff 2 - Day 4 - Total
Total   -       - Total Value

最后,我需要在每个员工记录的末尾插入总行。

那么,我的问题是如何在数据表中插入一行?咳咳。。

【问题讨论】:

  • @zerkms:一点也不宽泛。他只是问如何通过添加 DataRow 来操作 DataTable。

标签: c# datatable


【解决方案1】:
In c# following code insert data into datatable on specified position

DataTable dt = new DataTable();
dt.Columns.Add("SL");
dt.Columns.Add("Amount");

dt.rows.add(1, 1000)
dt.rows.add(2, 2000)

dt.Rows.InsertAt(dt.NewRow(), 3);

var rowPosition = 3;
dt.Rows[rowPosition][dt.Columns.IndexOf("SL")] = 3;
dt.Rows[rowPosition][dt.Columns.IndexOf("Amount")] = 3000;

【讨论】:

    【解决方案2】:

    你可以这样做,我正在使用

    数据表 1.10.5

    使用此代码:

    var versionNo = $.fn.dataTable.version;
    alert(versionNo);
    

    这是我使用 row.add 在我的 DataTable 上插入新记录的方式(我的表有 10 列),其中还可以包含 HTML 标记元素:

    function fncInsertNew() {
                var table = $('#tblRecord').DataTable();
    
                table.row.add([
                        "Tiger Nixon",
                        "System Architect",
                        "$3,120",
                        "2011/04/25",
                        "Edinburgh",
                        "5421",
                        "Tiger Nixon",
                        "System Architect",
                        "$3,120",
                        "<p>Hello</p>"
                ]).draw();
            }
    

    对于同时插入多个,请改用 rows.add

    var table = $('#tblRecord').DataTable();
    
    table.rows.add( [ {
            "Tiger Nixon",
            "System Architect",
            "$3,120",
            "2011/04/25",
            "Edinburgh",
            "5421"
        }, {
            "Garrett Winters",
            "Director",
            "$5,300",
            "2011/07/25",
            "Edinburgh",
            "8422"
        }]).draw();
    

    【讨论】:

    • 我认为 OP 指的是 C# 而不是 JavaScript - 但值得称赞的是,他们没有指定
    【解决方案3】:
    // create table
    var dt = new System.Data.DataTable("tableName");
    
    // create fields
    dt.Columns.Add("field1", typeof(int));
    dt.Columns.Add("field2", typeof(string));
    dt.Columns.Add("field3", typeof(DateTime));
    
    // insert row values
    dt.Rows.Add(new Object[]{
                    123456,
                    "test",
                    DateTime.Now
               });
    

    【讨论】:

    • 完美解决方案,tks
    【解决方案4】:

    @William 您可以使用数据表的 NewRow 方法来获取空白数据行,并将架构作为数据表的架构。您可以填充此数据行,然后使用.Rows.Add(DataRow).Rows.InsertAt(DataRow, Position) 将该行添加到数据表中。以下是一个存根代码,您可以根据自己的方便进行修改。

    //Creating dummy datatable for testing
    DataTable dt = new DataTable();
    DataColumn dc = new DataColumn("col1", typeof(String));
    dt.Columns.Add(dc);
    
    dc = new DataColumn("col2", typeof(String));
    dt.Columns.Add(dc);
    
    dc = new DataColumn("col3", typeof(String));
    dt.Columns.Add(dc);
    
    dc = new DataColumn("col4", typeof(String));
    dt.Columns.Add(dc);
    
    DataRow dr = dt.NewRow();
    
    dr[0] = "coldata1";
    dr[1] = "coldata2";
    dr[2] = "coldata3";
    dr[3] = "coldata4";
    
    dt.Rows.Add(dr);//this will add the row at the end of the datatable
    //OR
    int yourPosition = 0;
    dt.Rows.InsertAt(dr, yourPosition);
    

    【讨论】:

      【解决方案5】:
      // get the data table
      DataTable dt = ...;
      
      // generate the data you want to insert
      DataRow toInsert = dt.NewRow();
      
      // insert in the desired place
      dt.Rows.InsertAt(toInsert, index);
      

      【讨论】:

      • 我将循环循环数据表。所以每次我插入新行时 rows.count 都会增加,或者......只有当我写 AcceptChanges(); 时它才会增加;
      • @william: Rows.Count 将在您插入行后立即增加。 AcceptChanges 将重置所有新行上的RowState,这样它们就不会表明它们是新的。
      • 谢谢。但是,用省略号代替代码并没有帮助。但我想我知道你要去哪里,而且我应该能够解决它。再次感谢。
      猜你喜欢
      • 2013-12-12
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      相关资源
      最近更新 更多