2016-07-15 165 views
2

在我的vb.net項目中,我有3種形式。 home_mdi,ViewfrmAddDatafrmUltraWinGrid自動刷新

Viewfrm上面有一個UltraWinGrid,它正在顯示一些數據。當我點擊add data按鈕時,AddDatafrm打開。數據保存後,表單將關閉。 此時,我想要Viewfrm上的UltraWinGrid更新/刷新並顯示我添加的數據。目前,它不顯示它,直到我關閉Viewfrm,然後再次打開它。

圖片顯示了這一點。 (數據根本不存在開始,然後將其添加並沒有出現,最終的圖像顯示的是新的數據形式,我已經重新開放後。

enter image description here

我如何改變這種

當前代碼:

,打開添加形式

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click 

    Using fp = New frmAddData(Globals.m_database) 

     If fp.ShowDialog() = DialogResult.OK Then 

      ugData.DataSource = Nothing 
      getPeople() 

     End If 
    End Using 

End Sub 

要保存輸入的信息(添加表格)

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

    Dim m_cn As New OleDbConnection 
    m_cn = Globals.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 = "" 
     Globals.savedValue = True 

     Me.Close() 

    End If 

End Sub 

調用來加載,查看錶單上的數據庫:

Public Sub getPeople() 

    Try 
     Dim sql As String = "SELECT * FROM tblPerson ORDER BY [personID] ASC;" 
     Dim cm As New OleDbCommand(sql, Globals.m_database.getConnection()) 
     Dim da As New OleDbDataAdapter(cm) 
     Dim dt As New DataTable() 
     da.Fill(dt) 
     ugData.DataSource = dt 

    Catch Ex As Exception 
     mdi1.errorLog(Ex.Message, Ex.StackTrace) 
     MsgBox("Failed to retrieve data, refer to error log") 
    End Try 

End Sub 
+1

什麼是錯的在2天前我給你的那個人? – Steve

+1

@Steve這是因爲你使用了「使用fp作爲新的frmAddData」語句,它會自動用'frmView'打開'AddData'表單,而我最初只想打開'frmView',但要刷新數據保存表格關閉 – David

+0

該代碼應該進入frmView中按鈕添加的事件處理程序中。你把它放在哪裏? – Steve

回答

1

在WinForm的應用程序,一個模式對話框會自動由發動機如果按下一個按鈕關閉,其DialogResult屬性設置爲什麼都沒有。然後,Winform引擎將窗體DialogResult設置爲該按鈕的相同屬性,從ShowDialog調用中退出並返回單擊按鈕的DialogResult屬性。
通常這足以應付上述情況。 (或者在用戶在「是/否」或「確定」/「取消」情景之間進行選擇的一般情況下)

在您的代碼中(如聊天中所述),您將Save按鈕的DialogResult屬性設置爲DialogResult.None。這意味着Winforms引擎不會自動關閉表單,而需要編寫自己的關閉例程。

但是,如果您忘記將Form屬性DialogResult設置爲DialogResult.OK,則調用代碼將永遠無法刷新網格,因爲DialogResult.OK測試失敗。

所以,無論對關閉代碼,你必須關閉fromAddData實例,記得有

Me.DialogResult = DialogResult.OK 

設置窗體DialogResult屬性或者,如果事情是出了問題,與

Me.DialogResult = DialogResult.Cancel