2016-07-13 7 views
0

データベーステーブルのデータを表示するためのUltraWinGridを含む.NETプロジェクトがあります。 UWGのフォームには、3つのボタンがあります。 「新規データ」、「データの編集」、「データの削除」があります。最初の2つは、保存するデータを入力/編集するためのコントロールを備えた新しいフォームを開きます。保存機能はうまく動作しますが、フォームを閉じて(UWGを使用して)初期フォームを表示すると、データは更新されず、閉じて再オープンするときにのみ反映されます。別のフォームでのUltraWinGridリフレッシュ

したがって、新しいフォームの保存ボタンを押したときにUWGを更新できる方法はありますか? (私はすでにUWGをロードし、再び関数を呼び出して試してみましたが、私はそれを共有する方法を作ることができないので、これは原因の接続には動作しません)

保存機能コード:

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 

    Dim m_cn As New OleDbConnection 
    m_cn = m_database.getConnection() 


    If txtFirstName.Text = "" Then 
     MsgBox("First name cannot be blank") 

    ElseIf txtLastName.Text = "" Then 
     MsgBox("Last name cannot be blank") 

    ElseIf txtAge.Text = "" Then 
     MsgBox("Age cannot be blank") 

    ElseIf txtPostCode.Text = "" Then 
     MsgBox("Postcode cannot be blank") 

    Else 
     Dim personID As Integer = database.SaveNewPerson(txtFirstName.Text, txtLastName.Text, txtAge.Text, txtPostCode.Text, m_cn) 

     MsgBox("Save successful") 

     txtFirstName.Text = "" 
     txtLastName.Text = "" 
     txtAge.Text = "" 
     txtPostCode.Text = "" 

    End If 

End Sub 

コードことUWGはロード:

Public Sub getPeople() 

    Try 
     Dim sql As String = "SELECT * FROM tblPerson" 
     Dim cm As New OleDbCommand(sql, m_database.getConnection()) 
     Dim da As New OleDbDataAdapter(cm) 
     Dim dt As New DataTable() 
     da.Fill(dt) 
     ugData.DataSource = dt 

    Catch Ex As Exception 
     MsgBox("Could not load people") 
    End Try 

End Sub 

答えて

2

あなたは、呼び出し元のフォームではなく、保存形式でgetPeople関数を呼び出す必要があります。
保存フォームが正しく終了したかどうかを知る必要があり、この情報はShowDialogへの呼び出しの戻り値として利用可能です。人物データを保存し、あなたのボタンがOKに設定されDialogResult性質を有するべきであり、すべてがうまくになった場合、このコードは、予告ポイントあなたのため

' Open the form that inserts a new person 
' Change that name to your actual form class name... 
Using fp = new frmPerson() 

    ' If the user presses the button to save and everything goes well 
    ' we get the DialogResult property from the button pressed 
    if fp.ShowDialog() = DialogResult.OK Then 

     ugData.DataSource = Nothing 
     getPeople() 

    End If 
End Using 

を動作するはずです。つまり、ボタンの保存手順で何かがうまくいかない場合は、フォームを閉じてDialogResultプロパティをNoneに変更してブロックする必要があります。

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 

    Dim m_cn As New OleDbConnection 
    m_cn = m_database.getConnection() 


    If txtFirstName.Text = "" Then 

     MsgBox("First name cannot be blank") 
     Me.DialogResult = DialogResult.None 
    ElseIf txtLastName.Text = "" Then 
     MsgBox("Last name cannot be blank") 
     Me.DialogResult = DialogResult.None 
    ElseIf txtAge.Text = "" Then 
     MsgBox("Age cannot be blank") 
     Me.DialogResult = DialogResult.None 
    ElseIf txtPostCode.Text = "" Then 
     MsgBox("Postcode cannot be blank") 
     Me.DialogResult = DialogResult.None 
    Else 
     Dim personID As Integer = database.SaveNewPerson(txtFirstName.Text, txtLastName.Text, txtAge.Text, txtPostCode.Text, m_cn) 

     MsgBox("Save successful") 

     txtFirstName.Text = "" 
     txtLastName.Text = "" 
     txtAge.Text = "" 
     txtPostCode.Text = "" 
    End If 
End Sub 
+1

こんにちはスティーブ、応答のおかげで、私は使用しないか、理解していないので、このコードはvb.netのためにどのように変わるでしょうか? – David

+0

今すぐ修正しました... – Steve

+1

ラブリー、ありがとう! – David

関連する問題