2014-01-18 59 views
0

我有一個DataGridView dataTable的窗體。當我在最後插入記錄時,按下清除按鈕或形成所有字段(文本框,組合框,DGV複選框)會在我按下保存按鈕時自動清除。清除DataGridView,而不會丟失源

我通常通過字跡清晰的文本框和組合框:

textbox1.text = "" 
combobox1.text = "" 

但是當我做明確DGV與此類似:

dgvPurchase.dataSource = nothing 
dgvPurchase.Refresh() 

或 dgvPurchase.rows.clear()

它確實清除了DGV,但是當我添加新條目時,DataGridView和數據都不會出現在DGV中。在窗體的Load事件中,我有以下代碼:

dtField = retrieveFull("ProductBasicInfo") 

cmbPurProdID.DisplayMember = "ProdName" 
    cmbPurProdID.ValueMember = "ProdID" 
    cmbPurProdID.DataSource = dtField 


dtPurchase.Columns.Add("ProdID") 
dtPurchase.Columns.Add("ProdName") 
dtPurchase.Columns.Add("RetailerID") 
dtPurchase.Columns.Add("RetailerName") 
dtPurchase.Columns.Add("UnitPrice") 
dtPurchase.Columns.Add("Qty") 
dtPurchase.Columns.Add("Amount") 

dgvPurchase.DataSource = dtPurchase 

請指引我,有我的數據源不打擾,或者如果我清除它,所以它也刷新了數據源的任何方式。

這是添加按鈕的代碼,添加數據到DataGridView的

Try 

     For a As Integer = 0 To dtPurchase.Rows.Count - 1 
      If dtPurchase.Rows(a).Item("ProdID") = cmbPurProdID.SelectedValue Then 
       MessageBox.Show("This product is already enlisted") 
       Exit Sub 
      End If 
     Next 


     dRow = dtPurchase.NewRow 

     dRow.Item("ProdID") = cmbPurProdID.SelectedValue 
     dRow.Item("ProdName") = cmbPurProdID.Text 
     dRow.Item("RetailerID") = cmbPurRetailerID.SelectedValue 
     dRow.Item("RetailerName") = cmbPurRetailerID.Text 
     dRow.Item("UnitPrice") = txtPurUnitPrice.Text.Trim 
     dRow.Item("Qty") = txtPurQty.Text.Trim 
     dRow.Item("Amount") = txtPurAmount.Text.Trim 

     dtPurchase.Rows.Add(dRow) 
+0

將'datagridview's''DataSource'設置爲新的空'DataTource'。 – Marek

+0

請添加您的表單的屏幕截圖。 – Neolisk

+0

快速解決方案:將代碼從'Form.Load'放入自己的方法(例如:'LoadData')。然後在'Form.Load'事件處理函數中調用這個方法,並且在清空行之後... – Fabio

回答

0

您可以創建新的空DataTable並將其設置是這樣的:

C#

DataTable emptyDT = new DataTable(); 
dgvPurchase.DataSource = emptyDT 

VB。網

Dim emptyDT As New DataTable() 
dgvPurchase.DataSource = emptyDT 

這是否適合你?

+0

不。它清除DGV,但是當我爲下一個條目添加新條目時,因此上一條已經駐留在那裏。 – user87

+0

是的,因爲您再次將以前的DataTable加載到DGV中。而且你也做'dtPurchase.Rows.Add(dRow)'這意味着你在前面的'DataTable'中添加記錄而不是新的空的。我也不確定你想要達到什麼。正如你所說的那裏是按鈕'清除'按下你想清除datagridview和所有文本框沒有丟失數據的權利?然後,當您將一些記錄添加到以前的'datatable'' dtPurchase'時,您想僅顯示新的rocord的datagridview? – Marek

+0

嗯。親愛的馬雷克我認爲我做錯了什麼,如果這是真的,那麼我對此很陌生。請指導我在我的代碼中進行了哪些更改。我認爲我們正在接近解決方案。 – user87