Обновление представления сетки данных - PullRequest
0 голосов
/ 23 февраля 2012

Это похоже на легкое исправление, но я не могу понять это. Я пытаюсь вызвать событие нажатия кнопки в подформе (NewTournament), добавить запись в базу данных, а затем уведомить сетку данных, которая автоматически перечисляет записи из той же базы данных (сетка указана в HomeForm). *

Я могу обновить базу данных и вызвать новое окно. Но я не могу заставить его обновить эту сетку данных ни для чего. Я знаю, что должен очистить сетку данных, получить изменения, а затем снова заполнить сетку. Но каждый раз, когда я делаю это, код НЕ обновляется. Кроме того, я очень хорошо вижу, что запись добавляется.

Private Sub CreateTournament_Click(sender As System.Object, e As System.EventArgs) Handles CreateTournament.Click
    ' Check the form for errors, if none exist.
    ' Create the tournament in the database, add the values where needed. Close the form when done.

    Dim cn As OleDbConnection
    Dim cmd, cmd1 As OleDbCommand
    Dim icount As Integer
    Dim str, str1 As String

    Try
        cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\Paul Williams III\Documents\Visual Studio 2010\Projects\Everything OP Client\Everything OP Client\Master.mdb'")
        cn.Open()
        str = "insert into Tournaments (SanctioningID,TournamentName,TournamentVenue,TournamentDateTime,TournamentFirstTable,Game,Format,OrganizerID) values(" _
            & CInt(SanctioningIDTxt.Text) & ",'" & Trim(TournamentNameTxt.Text) & "','" & _
            "1" & "','" & EventDateTimePck.Value & "','" & TableFirstNumberNo.Value & "','" & GameList.SelectedIndex & "','" & FormatList.SelectedIndex & "','" & Convert.ToInt32(ToIDTxt.Text) & "')"

        'string stores the command and CInt is used to convert number to string
        cmd = New OleDbCommand(str, cn)
        str1 = "select @@Identity"
        icount = cmd.ExecuteNonQuery
        cmd1 = New OleDbCommand(str1, cn)
        Counter = CInt(cmd1.ExecuteScalar)
        MessageBox.Show(Counter & " was the last inserted id")
        'displays number of records inserted

        HomeForm.MasterDataSet.Clear()
        HomeForm.MasterDataSet.GetChanges()
        HomeForm.TournamentsTableAdapter.Fill(HomeForm.MasterDataSet.Tournaments)
        HomeForm.DataGridView1.Refresh()

    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try

    Me.Close()

    Dim n As New TournamentWindow
    n.TournID = Counter
    n.Show(HomeForm)

End Sub

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Лучший подход - добавить запись в источник данных DataGrid.DataGrid будет автоматически обновляться.В этом случае, скорее всего, будет что-то вроде

HomeForm.MasterDataSet.Tournaments.AddTournamentsRow( CInt(SanctioningIDTxt.Text) , _
                           Trim(TournamentNameTxt.Text) ,  _
                           "1" , _
                           EventDateTimePck.Value, _
                           TableFirstNumberNo.Value,  _ 
                           GameList.SelectedIndex, _
                           FormatList.SelectedIndex, _
                           Convert.ToInt32(ToIDTxt.Text) )

В качестве отдельного случая вы можете рассмотреть возможность использования параметризованных запросов для оператора вставки

0 голосов
/ 12 августа 2013

Это мой ответ, надеюсь, вам понравится. В моем проекте у меня есть коммутатор, и в этом коммутаторе он содержит представление сетки данных для моих данных. Прежде чем он обновится самостоятельно, когда пользователь использовал запрос, и он обновит его самостоятельно. Я учил об этом, как сделать это по-другому. Поэтому я использовал эту технику эффекта обновления таймера. Как это работает, я ставлю таймер и в таймер я копирую и вставляю этот код из формы загрузки.

* * 1002 Me.ADDRESS_TICKETTableAdapter.Fill (Me.Database1DataSet.ADDRESS_TICKET) * * 1003

И в настройках таймера я включаю его, и каждые 9 секунд он перезагружает данные, которые вы можете изменить, чтобы он перезагружал каждую 1 секунду, если хотите, зависит от того, сколько записей поступает. тем не мение. Это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...