DataTable内部索引已损坏Winforms C# - 无法解决如何解决问题

时间:2014-04-02 07:19:31

标签: c# .net winforms dataset c#-3.0

我研究过net for DataTable内部索引已损坏,但是,没有为此定义解决方案。有些人建议避免使用默认视图,而其他人则建议使用AcceptChanges()等。我不知道应该在哪里修复它作为一个非常大的应用程序。在任何字段中都会发生异常,但在下面的第二个代码块中,不会在一个字段上保持一致。

我是新手,对此有任何帮助或建议,请。我还可以提供您需要的任何信息。

这是我得到例外的地方。

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public bool M_FLAG {
        get {
            return ((bool)(this[this.tableShip.M_FLAGColumn]));
        }
        set {
            this[this.tableShipment.M_FLAGColumn] = value;
        }
    }

这是由

调用的
 if (!isInList(ShipEntities.SpecialServiceType.IdMDelivery) )                
 {
    shipment.Shipment[0].M_FLAG = false;
    shipment.Shipment[0].N_FLAG = false;

 }

有趣的是,我在其他时间在第二个字段“N”上得到例外。

这是异常细节的一部分:

System.InvalidOperationException: DataTable internal index is corrupted: '5'.
   at System.Data.RBTree`1.RBInsert(Int32 root_id, Int32 x_id, Int32 mainTreeNodeID, Int32 position, Boolean append)
   at System.Data.RBTree`1.RBInsert(Int32 root_id, Int32 x_id, Int32 mainTreeNodeID, Int32 position, Boolean append)
   at System.Data.RBTree`1.Insert(K item)
   at System.Data.Index.RecordStateChanged(Int32 oldRecord, DataViewRowState oldOldState, DataViewRowState oldNewState, Int32 newRecord, DataViewRowState newOldState, DataViewRowState newNewState)
   at System.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)
   at System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Int32 position, Boolean fireEvent, Exception& deferredException)
   at System.Data.DataTable.SetNewRecord(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean fireEvent)
   at System.Data.DataRow.SetNewRecord(Int32 record)
   at System.Data.DataRow.EndEdit()
   at System.Data.DataRow.set_Item(DataColumn column, Object value)

0 个答案:

没有答案