在Form4
我有DataGridView
名为DbTableDataGridView
。
在Form3
中,有一组字段(文本框)都绑定到DbTableBindingSource
。当我运行应用程序时,Form4
显示出来。有一个按钮可以打开新表单(Form3
),然后在其中输入有关要作为新行添加到数据库(DataGridView
)的客户的详细信息。我的代码是"添加" Form4
中的按钮如下所示:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.DbTableDataGridView.Refresh()
Me.DbTableBindingSource.AddNew()
Form3.ShowDialog()
Form3.ImiéTextBox.Text = ""
Form3.NazwiskoTextBox.Text = ""
Form3.Numer_TelefonuTextBox.Text = ""
Form3.Numer_RejestracyjnyTextBox.Text = ""
Form3.MarkaTextBox.Text = ""
Form3.ModelTextBox.Text = ""
Form3.Poj_SilnikaTextBox.Text = ""
Form3.RocznikTextBox.Text = ""
Form3.PaliwoTextBox.Text = ""
Form3.Data_PrzyjeciaDateTimePicker.Value = DateTime.Now
Form3.RichTextBox1.Text = ""
End Sub
它会添加新行,选择它并清除文本框中的条目(绑定到' DbTableBindingSource'。 在我填写所有字段后,我按下按钮保存:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Me.Validate()
Form4.DbTableBindingSource.EndEdit()
Me.DbTableTableAdapter.Update(CartronicDBDataSet.dbTable)
TableAdapterManager.UpdateAll(CartronicDBDataSet)
DbTableTableAdapter.Fill(Form4.CartronicDBDataSet.dbTable)
MsgBox("Saved")
Catch ex As Exception
MessageBox.Show("Blad zapisu. Sprobuj ponownie. W razie potrzeby zamknij, a nastepnie uruchom ponownie program Cartronic")
End Try
End Sub
它转到消息"已保存"但实际上最近没有补充新的。 有什么想法吗?
答案 0 :(得分:0)
我在Form3和您的数据之间没有链接。
我建议将新创建的数据行传递给Form3的新实例。
将数据流传递到表单中,您可以将其直接绑定到文本框
Dim newRow = CType(Me.DbTableBindingSource.AddNew(), DataRow)
Using frmEditor As New Form3
frmEditor.DataSource = newRow
frmEditor.ShowDialog()
End Using
在form3中添加属性(或最好是构造函数)
Private mDataSource As DataRow
Public Property DataSource As DataRow
Get
Return mDataSource
End Get
Set(value As DataRow)
mDataSource = value
Me.ImiéTextBox.DataBindings.Add("Text", mDataSource, "ImiéFieldName")
' ....
End Set
End Property
如果您使用此方法,则可以删除所有文本框清除代码。
答案 1 :(得分:0)
我已经完成了你的建议,但更简单一些。 将所有文本框分配给当前行中的每个单元格,如下所示:
Form4.DbTableDataGridView.CurrentRow.Cells(5).Value = Me.NazwiskoTextBox.Text.ToString
Form4.DbTableDataGridView.CurrentRow.Cells(4).Value = Me.ImiéTextBox.Text.ToString
工作正常。 干杯