2016-08-19 13 views
0

Form4私はという名前のDbTableDataGridViewを持っています。 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 

次のよう は、現在の行の各セルにすべてのテキストボックスを割り当てられました。 いいえ。

0

Iリンクがありません。? bを見ることができるForm3とあなたのデータの間。

新しく作成したデータ行をForm3の新しいインスタンスに渡すことをお勧めします。

  1. が新しいたForm3を作成します。新しく追加された行
  2. への参照を取得します(既定のインスタンスのフォームを避けるため、彼らは醜いと悪です)。これにより、毎回まったく新しいフォームがあるので、テキストボックスをクリアする必要はありません。あなたがテキストボックス

    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 

あなたが使用している場合を追加するに直接結合する場所

  • は、フォームへのDataRowを渡しますこのアプローチでは、テキストボックスのクリアコードをすべて取り除くことができます。

    +0

    Form3.Desiner.vbで、私はバインディングソースにバインドされたすべてのテキストボックスインスタンスを変更しました。当初はMe.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding( "Text"、Me.DbTableBindingSource、 "Dodano Przez"、True))でした。そして、私はそれらのすべてをMe.TextBox1.DataBindings.Add( "Text"、Form4.DbTableBindingSource、 "Dodano Przez"、True))(代わりに "Me"から "Form4")に変更します。 。それはokを実行しますが、私は 'WindowsApplication4.My.MyProject'に 'Forms'という名前のプロパティがないというエラーが表示されます。 –

    +0

    私は、テキストプロパティ - >データ - >データバインディング - >テキストを使用してForm3の各関連テキストボックスをバインドし、バインディングソースを選択しました。しかし、これはうまくいかないようです。 Form4でバインドするコードを変更したが、このエラーが発生し、プロパティ内のすべてのバインディングが消えたときにのみ機能しました。 –

    +0

    ここにいくつかの問題があります。 1 .designerファイルで何も変更しないでください。上書きされます。私は自分自身のバインディングソースを使用しないので、その使用法を認識していません。だから私はバインディングソースを使用するか、私のアプローチを使用すると言うでしょう。3は、ある形のものを別の形から引用することは決してありません(例えば、形式3のform4.dbtablebindingを参照してください)。 4は、新しいForm3などを使用する代わりに、デフォルトのフォームインスタンスを使用しません。 – FloatingKiwi

    関連する問題