C#datatable.GetChanges()似乎无法使用我的自定义数据(返回所有行) [英] C# datatable.GetChanges() seems not working with my custom datable (return all rows)
本文介绍了C#datatable.GetChanges()似乎无法使用我的自定义数据(返回所有行)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的自定义数据表遇到了一些问题,经过一些更改(添加一行))我正在尝试获取GetChanges(),但它返回所有记录(1k +)。这有什么不对吗?
i've encountered some problems with my custom datatable, after make some changes (adding one single row)) i'm trying to get GetChanges(), but it returns all records (1k+). Whats wrong with it?
public class ControlPointsDataTable: BaseDataTable
{
public ControlPointsDataTable()
{
TableName = "ControlPoints";
TableDescription = "Contains system control points";
DataColumn dataColumnID = new DataColumn("ID", typeof(System.Int64));
dataColumnID.Caption = "ID";
dataColumnID.AllowDBNull = false;
dataColumnID.DefaultValue = -1;
Columns.Add(dataColumnID);
DataColumn dataColumnName = new DataColumn("Name", typeof(System.Int64));
dataColumnName.Caption = "CP Name";
dataColumnName.AllowDBNull = false;
dataColumnName.DefaultValue = -1;
Columns.Add(dataColumnName);
}
protected override Type GetRowType()
{
return typeof(ControlPointsRow);
}
protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
{
return new ControlPointsRow(builder);
}
public ControlPointsRow this[int idx]
{
get { return (ControlPointsRow)Rows[idx]; }
}
public void Add(ControlPointsRow row)
{
Rows.Add(row);
}
public void Remove(ControlPointsRow row)
{
Rows.Remove(row);
}
public ControlPointsRow GetNewRow()
{
ControlPointsRow row = (ControlPointsRow)NewRow();
return row;
}
public class ControlPointsRow : DataRow
{
[DataMember]
public System.Int64 ID
{
get {return (System.Int64)base["ID"];}
set {base["ID"]=value;}
}
[DataMember]
public System.Int64 Name
{
get {return (System.Int64)base["Name"];}
set {base["Name"]=value;}
}
internal ControlPointsRow(DataRowBuilder builder) : base(builder) {}
}
}
我的自定义基础DataTable类:
My custom base DataTable class:
[ServiceContract(Namespace = Constants.NAMESPACE)]
public class BaseDataTable : DataTable
{
public string TableDescription { get; set; }
}
推荐答案
加载数据表后。
您将不得不说
Datatable.AcceptChanges()用于初始提交
然后当你在插入后运行getchanges时,它应该返回插入的新行
Once you load the Datatable.
You will have to say
Datatable.AcceptChanges() for the initial commit
Then when you run getchanges after insert , it should return the new row inserted
这篇关于C#datatable.GetChanges()似乎无法使用我的自定义数据(返回所有行)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文