2010-03-08 53 views
0

當我在datagridview中添加第一個項目時,它的確定,但是當我添加第二個項目時,它將替換最後添加的項目。 這裏是我的代碼 私人小組的add()在Datagridview中正在替換項目

Dim i As Integer 
    For i = 0 To DataGridView1.Rows.Count - 1 
     'DataGridView1.Rows.Add() 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("TransID").Value = txttrans.Text 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("ProductCode").Value = txtprodcode.Text 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("ProductName").Value = cmbprodname.Text 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("Quantity").Value = txtqty.Text 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("Price").Value = txtprc.Text 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("Amount").Value = txtat.Text 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("CustomerName").Value = txtcust.Text 
     DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("Date1").Value = txtdate.Text 

    Next i 


End Sub 

而且這是在我的Add按鈕:

私人小組btnadd_Click(BYVAL發件人爲System.Object的,BYVALË作爲System.EventArgs)把手btnadd.Click

Try 
     add() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
    Dim total As Integer 

    For Each row As DataGridViewRow In DataGridView1.Rows 

     total += row.Cells("Amount").Value 

    Next 

    txtamt.Text = total 
+0

基於您收到的錯誤消息,您正在收到數據結構錯誤消息。我剛進入視覺工作室,並嘗試根據您的輸入重新創建此場景。我遇到了這樣的問題,如果我有一個datagridview,並且我想根據datagridview的結構創建一個行,那幾乎是不可能的。我的建議是創建一個你想要的列的數據表 – gsirianni 2010-03-08 15:37:11

回答

0

若本(以及其他線)

DataGridView1.Rows(DataGridView1.RowCount - 1).Cells("TransID").Value = txttrans.Text 

DataGridView1.Rows(i).Cells("TransID").Value = txttrans.Text 

,否則你只是addint行DataGridView1.RowCount - 1

+0

它的工作,但是當我添加第三個項目時,它將取代所有的最後2個項目 – stephanie 2010-03-08 14:37:06

+0

@stephanie:你能顯示你的更新代碼嗎? – AxelEckenberger 2010-03-08 16:38:42

+0

我還沒有該表單的更新代碼。我正在銷售點。並填充文本框後,我將其添加到datagridview – stephanie 2010-03-09 12:42:23

0

請嘗試以下操作。使用您需要的數據結構創建一個數據表。我提供了一個做什麼的小例子。數據列數組包含列信息。 dt.columns.addRange將您的列設置爲所需的列名稱結構。 dt.newRow()方法返回一個空行,但包含必要的模式,這樣你就不會得到你所得到的錯誤。一旦添加了必要的所有行,則可以使用行[「columnName」]引用數據表中的行。

使用datagridview.datasource = dt將datagrid綁定到數據表對象。

public Form1() 
    { 
     DataColumn column0 = new DataColumn("TransID"); 
     DataColumn column1 = new DataColumn("Price"); 
     DataColumn column2 = new DataColumn("Quantity"); 

     columns[0] = column0; 
     columns[1] = column1; 
     columns[2] = column2; 

     DataTable dt = new DataTable(); 
     dt.Columns.AddRange(columns); 

     //Creates a datarow object based on the dataable's schema 
     DataRow row = dt.NewRow(); 

     row["TransID"] = "Transaction Text"; 
     row["Price"] = "Price Text"; 
     row["Quantity"] = "Quantity"; 

     //Add the row to the dataTable 
     dt.Rows.Add(row); 

     dataGridView1.DataSource = dt; 
    } 
+0

我想添加項目。 ..出現一個錯誤提示「名爲TransID的列無法找到。參數名稱:columnName。 但是當我檢查它的同名時。 – stephanie 2010-03-08 14:30:44

+0

聽起來像有一些架構問題。你能發佈完整的datagridview聲明嗎?我的意思是datagridview數據結構的佈局,我自己上週也遇到過這個問題 – gsirianni 2010-03-08 14:35:19

+0

另外,你是否通過設計者聲明瞭你的列,或者你是否以編程方式聲明瞭它們? – gsirianni 2010-03-08 14:44:44