在 DataTable 中插入新行
Posted
技术标签:
【中文标题】在 DataTable 中插入新行【英文标题】:Insert a new row into 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。 【参考方案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
,这样它们就不会表明它们是新的。
谢谢。但是,用省略号代替代码并没有帮助。但我想我知道你要去哪里,而且我应该能够解决它。再次感谢。以上是关于在 DataTable 中插入新行的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery Datatable 插入新行时禁用/防止搜索回调