2016-08-19 59 views
0

Form4中我有一個名爲DbTableDataGridViewDataGridView。 在Form3有一組字段(文本框),都綁定到DbTableBindingSource。當我運行應用程序時出現Form4。有一個按鈕可以打開新表單(Form3),然後在此處輸入有關要作爲新行添加到數據庫中的客戶的詳細信息(DataGridView)。我在Form4「添加」按鈕,代碼如下:從`DataBindingSource`在`DataGridView`中將數據添加到新添加的行中

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

我已經完成了你的建議,但稍微簡單一些。 分配的所有文本框,以每個單元格當前行中如下:

Form4.DbTableDataGridView.CurrentRow.Cells(5).Value = Me.NazwiskoTextBox.Text.ToString 
     Form4.DbTableDataGridView.CurrentRow.Cells(4).Value = Me.ImiéTextBox.Text.ToString 

它工作正常。 Cheers

0

沒有聯繫我可以看到b在Form3和你的數據之間。

我建議將新創建的數據行傳遞給Form3的新實例。

  1. 獲取關於你新添加的行
  2. 創建一個新的Form3(避免默認實例的形式,他們是醜陋和邪惡)。這意味着你不需要清除文本框,因爲每次都有一個全新的表單。
  3. 傳遞數據行到您的表單,您將直接將其綁定到文本框

    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 

如果使用這種方法,那麼你可以擺脫所有的文本框清除代碼。

+0

在Form3.Desiner.vb中,我更改了所有綁定了我的綁定源的文本框實例。最初它是Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding(「Text」,Me.DbTableBindingSource,「Dodano Przez」,True))。我將它們全部更改爲Me.TextBox1.DataBindings.Add(新建System.Windows.Forms.Binding(「Text」,Form4.DbTableBindingSource,「Dodano Przez」,True))(從「我」到「Form4」) 。它確實運行正常,但我得到一個錯誤說:'WindowsApplication4.My.MyProject'沒有名爲'窗體'的屬性。 –

+0

我確實使用文本屬性 - > Data-> DataBindings-> Text來綁定Form3中的每個相關文本框,並選擇了我的綁定源。但這似乎不起作用。它只有當我在代碼中更改以綁定Form4時有效,但是出現此錯誤並且屬性中的所有綁定都消失了。 –

+0

這裏有幾個問題。 1從不修改.designer文件中的任何內容。它會被覆蓋。我自己不使用綁定源,所以我不知道它們的用法。所以我會說要麼使用綁定源或使用我的方法。3永遠不要以某種形式從另一種形式引用某些形式(例如,參考形式3中的form4.dbtablebinding)。 4從來沒有使用默認的窗體實例,而是使用新的Form3等 – FloatingKiwi