prafulla1978 Ответов: 2

В datagridview требуется время для загрузки данных


у меня есть таблица данных и моя база данных находится в ms access я пытался загрузить данные в нее vb.net представление таблицы данных, но для загрузки данных требуется много времени. что же делать ? у меня есть свойство AllowUesertoAddrow datagridview false. и добавление строк в коде.

Что я уже пробовал:

Dim sql = ("SELECT * FROM TotalInput")
        maxrow = get_maxrow(sql)

        Dim i As Integer
        i = dt.Rows.Count - 1
        DgTotalInput.Rows.Add(1)
        For i = 1 To i - 1
            DgTotalInput.Rows.Add(1)
        Next
        For i = 0 To dt.Rows.Count - 1
            With dt.Rows(i)
                DgTotalInput.Rows(i).Cells(0).Value = .Item("ID")
                DgTotalInput.Rows(i).Cells(2).Value = .Item("TInputDate")
                DgTotalInput.Rows(i).Cells(3).Value = .Item("TICredited")
                DgTotalInput.Rows(i).Cells(4).Value = .Item("TIAmount")
                DgTotalInput.Rows(i).Cells(5).Value = .Item("TIMode")
                DgTotalInput.Rows(i).Cells(6).Value = .Item("TIDate")
                DgTotalInput.Rows(i).Cells(7).Value = .Item("TIDebited")
                DgTotalInput.Rows(i).Cells(8).Value = .Item("TInputMode")
                DgTotalInput.Rows(i).Cells(9).Value = .Item("TITotal")
                DgTotalInput.Rows(i).Cells(10).Value = .Item("TIRemark")
            End With
        Next i

2 Ответов

Рейтинг:
2

Sandeep Mewara

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

Вы можете получить данные из базы данных, заполнить их в адаптере, а затем назначить источник данных grid. Поверьте, это должно быть быстрее для вас.
Пример:

Private Sub GetData(ByVal selectCommand As String)
    Try
        ' Specify a connection string.  
        ' Replace <SQL Server> with the SQL Server for your Northwind sample database.
        ' Replace "Integrated Security=True" with user login information if necessary.
        Dim connectionString As String =
            "Data Source=<SQL Server>;Initial Catalog=Northwind;" +
            "Integrated Security=True;"

        ' Create a new data adapter based on the specified query.
        dataAdapter = New SqlDataAdapter(selectCommand, connectionString)

        ' Create a command builder to generate SQL update, insert, and
        ' delete commands based on selectCommand. 
        Dim commandBuilder As New SqlCommandBuilder(dataAdapter)

        ' Populate a new data table and bind it to the BindingSource.
        Dim table As New DataTable With {
            .Locale = Globalization.CultureInfo.InvariantCulture
        }
        dataAdapter.Fill(table)
        bindingSource1.DataSource = table

        ' Resize the DataGridView columns to fit the newly loaded content.
        dataGridView1.AutoResizeColumns(
            DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)

    Catch ex As SqlException
        MessageBox.Show("To run this example, replace the value of the " +
            "connectionString variable with a connection string that is " +
            "valid for your system.")
    End Try
End Sub

Ссылка: Привязка данных к элементу управления DataGridView - Windows Forms | Microsoft Docs[^]


prafulla1978

Это неправильный ответ, потому что я дал все готовые имена заголовков в datagridviewrow заголовкам с помощью опции редактирования столбцов при щелчке правой кнопкой мыши . этот метод показывает далее все столбцы с данными, но отдельные столбцы в сетке.

Sandeep Mewara

Отключите автогенерацию столбцов в значение false, чтобы избежать добавления столбцов во время привязки.

Убедитесь, что определенные вами столбцы имеют поля, сопоставленные с тем, что есть в источнике данных.

Sandeep Mewara

Ссылка: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.datagridview.autogeneratecolumns?view=netcore-3.1

Рейтинг:
1

OriginalGriff

Или... просто используйте DataTable, который у вас уже есть:

DgTotalInputDataSource = dt;


Но... если это займет какое-то время ... действительно долгое время, также вероятно, что у вас слишком много данных. Вы никогда не должны показывать пользователю более 100-200 строк: если у вас их больше, становится все труднее найти интересующие их данные. Вместо этого, страница данных, обеспечить фильтры и поиск, сделать жизнь пользователя проще.


prafulla1978

Это не является успешным маячком, так как после добавления фильтра он не сохраняет новые данные строки/ вставляет новые данные строки в базу данных

prafulla1978

как вызвать метод getdata при нажатии кнопки