C#datatable.GetChanges()似乎无法使用我的自定义数据(返回所有行) [英] C# datatable.GetChanges() seems not working with my custom datable (return all rows)

查看:480
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆