2012-08-05 13 views
1

下面的代碼:不能添加多行爲DataSet

DataSet1.CashRow CashRow = MainDataSet.Cash.NewCashRow(); 
CashRow.SetIdNull(); 
CashRow.Date = CashItem.Date; 
CashRow.Description = CashItem.Description; 
CashRow.Amount = CashItem.Amount; 
MainDataSet.Cash.Rows.Add(CashRow); 

它工作得很好,第一次。但是,如果放入一個循環並簡單加倍,則不會再添加行。我必須關閉應用程序並重新啓動它。

更新:我有一個連接到DataSet的DataGridView。這會導致任何問題嗎?這個問題真的很奇怪,一直試圖解決這個問題一個星期。也許有另外的方法來添加行?

更新2:找到原因:「System.Data.ConstraintException:列'Id'被限制爲唯一的,值''已經存在。

+4

請顯示一個簡短但完整的程序來展示問題。 – 2012-08-05 08:51:31

+0

喬恩,你想看看這個代碼從哪裏縮短的功能? – Technical 2012-08-05 09:24:29

+0

我想我們只需要更多的信息。什麼'沒有更多的行被添加'是什麼意思?錯誤,異常?網格顯示什麼? – 2012-08-05 09:33:10

回答

0

試試這個:

DataSet1.CashRow CashRow = MainDataSet.Cash.NewCashRow(); 
CashRow.Date = CashItem.Date; 
CashRow.Description = CashItem.Description; 
CashRow.Amount = CashItem.Amount; 

MainDataSet.Cash.AddCashRow(CashRow); 

CashTableAdapter.Update(MainDataSet); 

如果仍然只更新一行把該塊,作爲函數,像這樣:

private void CreateCashRow (DateTime date, string description, int amount) 
{ 
    DataSet1.CashRow CashRow = MainDataSet.Cash.NewCashRow(); 
    CashRow.Date = date; 
    CashRow.Description = description; 
    CashRow.Amount = amount; 

    MainDataSet.Cash.AddCashRow(CashRow); 

    CashTableAdapter.Update(MainDataSet); 
} 

並調用該函數儘可能多的時間,你所需要的。

你必須確保你有PrimaryKey的桌子上

  • 我也建議你不要使用VAR和類型,如你與CashRow這樣做相似的名稱。
+0

不,很抱歉,既沒有工作。甚至試圖在添加一行後更新每個表格。 – Technical 2012-08-05 09:29:05

+0

id列是一個標識列(自動增量)? – YAYAYAYA 2012-08-05 09:45:09

+0

並確保你有PrimaryKey – YAYAYAYA 2012-08-05 09:58:53