Как обновить gridview после добавления записей в Gridview и VB.net? - PullRequest
0 голосов
/ 28 августа 2018

В моем приложении я добавляю записи, используя отдельную форму. После добавления записей главная страница обновится и покажет последнее добавление в первой строке. Но в моем коде этого не происходит. Только если я перейду на следующую страницу и вернусь на первую страницу, последняя запись будет отображаться сверху. Загрузка главной страницы (form_admin.vb)

Private Sub admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 


        ' module function connect to dbms
        mod_sqlconnect.connect()

        ds.Clear()
        mod_datagrid.gridview("risk") ' module function to use MySQLAdapter

        Adpt.Fill(ds, "risk")
        'Set the start and max records. 
        pageSize = 20
        maxRec = ds.Tables("risk").Rows.Count
        PageCount = maxRec \ pageSize

        ' Adjust the page number if the last page contains a partial page.
        If (maxRec Mod pageSize) > 0 Then
            PageCount = PageCount + 1
        End If

        currentPage = 1
        recNo = 0

        LoadPage()

    End Sub

    Public Sub LoadPage()
        Dim i As Integer
        Dim startRec As Integer
        Dim endRec As Integer
        Dim dtTemp As DataTable
        Dim dr As DataRow

        dtTemp = ds.Tables("risk").Clone

        If currentPage = PageCount Then
            endRec = maxRec
        Else
            endRec = pageSize * currentPage
        End If

        startRec = recNo

        'Copy the rows from the source table to fill the temporary table.
        For i = startRec To endRec - 1
            dtTemp.ImportRow(ds.Tables("risk").Rows(i))
            recNo = recNo + 1
        Next

        DataGridView1.DataSource = dtTemp


    End Sub

Вставить форму, чтобы добавить новые reocrds

Private Sub ADD_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click


        'coding to check if all data is entered ……… hided


            'declarations
            Dim ni_newindex As Integer
            Dim ri_insert As MySqlDataReader
            Dim cmdi_insert As New MySqlCommand


            'adding new risk using insert command
            conn.Open()
            cmdi_insert = New MySqlCommand(String.Format("INSERT INTO risk VALUES ({19},'{0}','{1}','{2}','{3}',{4},'{5}','{6}','{7}','{8}','{9}','{10}',{11},{12},'{13}','{14}',{15},{16},'{17}','{18}', curdate(),NULL );", i1.SelectedItem, i2.Text, i3.SelectedItem, i4.SelectedItem, i5.Text, i6.SelectedItem, i7.SelectedItem, i8.SelectedItem, i9.SelectedItem, i10.SelectedItem, i11.SelectedItem, i12.Text, i13.Text, i14.Text, i15.Text, i16.Value, i17.Text, i18.Text, i19.Text, ni_newindex), conn)

            cmdi_insert.ExecuteNonQuery()
            conn.Close()


            ds.Clear()
            mod_datagrid.gridview("risk")
            Adpt.Fill(ds, "risk")

            form_admin.currentPage = 1
            form_admin.recNo = 0
            form_admin.pageSize = 20

            form_admin.LoadPage()
            form_admin.DataGridView1.Refresh()  'Refreshing gridview is not updating the gridview


            Me.Close()

        End If
    End Sub

Но если я перейду на следующую страницу с помощью кодирования страниц и вернусь на ту же страницу, запись будет там.

Кодирование следующей страницы и предыдущей страницы:

Private Sub btnNextbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNextbutton.Click     

        currentPage = currentPage + 1

        If currentPage > PageCount Then
            currentPage = PageCount           
        End If

        LoadPage()
    End Sub

    Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click

        If currentPage = PageCount Then
            recNo = pageSize * (currentPage - 2)
        End If

        currentPage = currentPage - 1
        If currentPage < 1 Then
            MessageBox.Show("You are at the First Page!")
            currentPage = 1
            Return
        Else
            recNo = pageSize * (currentPage - 1)
        End If

        LoadPage()   
 End Sub

Когда я отлаживаю, после добавления новой записи, когда я проверяю здесь dtTemp.ImportRow(ds.Tables("risk").Rows(i)), он показывает последнее добавление в окне просмотра, но gridview не показывает это.

1 Ответ

0 голосов
/ 29 августа 2018

вместо

 form_admin.DataGridView1.Refresh()

Попробуйте

form_admin.DataGridView1.Datasouce = Nothing
form_admin.DataGridView1.DataSource = dtTemp

. Refresh только перерисовывает сетку и не касается ее данных.

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