我有一個包含多個表的數據集。特別是一張桌子上有一張唱片。我將另一條記錄添加到此數據表中,並使用Dataset.Copy()方法將整個數據集對象複製到另一個實例。Dataset.Copy()不復制新記錄的值
Dataset2 = DirectCast(Dataset1.Copy(), dsApplication)
然而,從這個方法返回的數據集的新副本是不正確的。新行在那裏,並且具有「已添加」的RowState,但值爲空(這是一個字符串字段)。數據集以空白值保存到數據庫。
現在,我有兩行。原來的,還有空白的。如果我將空白文本更改爲具有文本並再次啓動操作,則原始數據集將該行顯示爲具有文本,但RowState未更改,並且第二個數據集對於該行再次爲空。
沒有人有這種行爲的解釋?爲什麼不是在Dataset.Copy()操作中複製第二行的值?爲什麼添加文本後第二行的RowState不顯示爲已修改?
編輯:原始數據集被通過一個DataGridView修改。如果在將文本輸入到datagridview單元格後,我在啓動複製操作之前單擊另一行,它可以正常工作。如果我不點擊另一行,那麼它會失敗。在我開始複製操作之前,我調用datagridview.endedit()方法。這仍然很奇怪,因爲即使沒有點擊到另一個單元格,當我調試代碼時,原始數據集在複製操作之前總是顯示正確的值,所以我不明白datagridview爲什麼會有任何影響。
編輯#2:調試時,我注意到,如果我改變在GridView的第一個值,該RowState的被改爲修改,符合市場預期。但是,對於其他任何行,儘管實際值發生更改,但RowState仍保持不變。
調用AcceptChanges()方法將RowState設置爲「未更改」,並且行將不可用於數據庫插入或更新命令。這似乎是一個與datagridview相關的錯誤,但我還沒有弄明白。 – NYSystemsAnalyst 2009-05-21 14:40:02