【发布时间】:2014-02-07 23:42:48
【问题描述】:
我有一个带有 DataGridView 的表单,dataSourced by dataTable。当我在最后插入记录时,我按下清除按钮或形成所有字段(文本框、组合框、DGV 复选框)在我按下保存按钮时自动清除。
我通常通过写来清除文本框和组合框:
textbox1.text = ""
combobox1.text = ""
但是当我这样清除 DGV 时:
dgvPurchase.dataSource = nothing
dgvPurchase.Refresh()
或 dgvPurchase.rows.clear()
它确实清除了 DGV,但是当我添加新条目时,DataGridView 和数据都不会出现在 DGV 中。在表单加载事件中,我有以下代码:
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)
【问题讨论】:
-
将
datagridview'sDataSource设置为新的空DataTource。 -
请添加表单截图。
-
快速解决方案:将
Form.Load中的代码放到自己的方法中(例如:LoadData)。然后在Form.Load事件处理程序中调用此方法,并在清空行之后... -
@Marek:我试过 DGV.Datasource = NOthing 但也没有工作。 Neolisk 我尝试添加图像,但我不知道如何将图像附加到我的线程。
标签: vb.net winforms datagridview