DataGridView не отображает мою кнопку удаления - PullRequest
0 голосов
/ 17 февраля 2019

У меня проблема со второй загрузкой данных с использованием DataGridView.

Вот мой DataGridView и кнопка удаления при первой загрузке данных:

enter image description here

При моей второй загрузке данных я получаю эту ошибку:

enter image description here

После того, как я нажму Ok это то, что происходит в моем DataGridView:

enter image description here

Кнопка удаления исчезла.

Это мой код:

Private Sub loaddata()
    Dim con As New MySqlConnection
    Dim cmd As New MySqlCommand
    con.ConnectionString = "server=192.168.1.10;database=orderingsystem;username=server;password=server"
    Dim da As New MySqlDataAdapter
    Dim ds As New DataTable
    Dim source As New BindingSource
    Try
        con.Open()
        Dim query As String
        Dim total As Double
        Dim btn As New DataGridViewButtonColumn
        btn.HeaderText = "Action"
        btn.Text = "Delete"
        btn.Name = "btn"
        btn.UseColumnTextForButtonValue = True

        query = "SELECT prodID, SUM(prodQty) as QTY, prodname as Name, prodPrice*SUM(prodQty) as Total from orderedlist where table_name = '" & Form1.Table_1.Name & "' GROUP BY prodID"
        cmd = New MySqlCommand(query, con)
        da.SelectCommand = cmd
        da.Fill(ds)
        source.DataSource = ds
        dgv_myOrder.DataSource = ds
        dgv_myOrder.Columns(0).Visible = False

        For i As Integer = 0 To dgv_myOrder.Rows.Count - 1
            total += Convert.ToDecimal(dgv_myOrder.Rows(i).Cells(3).Value).ToString("0.00")

        Next
        dgv_myOrder.Columns.Add(btn)

        lbl_Total.Text = Decimal.Parse(total).ToString("0.00")
        con.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
    End Try
End Sub

Private Sub dgv_myOrder_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv_myOrder.CellClick

    If e.RowIndex = dgv_myOrder.NewRowIndex Or e.RowIndex < 0 Then
    ElseIf e.ColumnIndex = dgv_myOrder.Columns("btn").Index Then

        Dim connection As String = "server=192.168.1.10;database=orderingsystem;username=server;password=server;"
        Dim con2 As New MySqlConnection(connection)
        con2.Open()

        Dim data As String = dgv_myOrder.SelectedRows(0).Cells(0).Value.ToString
        Label2.Text = data

        Dim rd2 As MySqlDataReader
        Dim cmd2 As New MySqlCommand("UPDATE orderedlist SET cancelstatus = 1 WHERE prodID = '" & Label2.Text & "' and table_name = '" & Form1.Table_1.Name & "'", con2)

        rd2 = cmd2.ExecuteReader
        con2.Close()
        con2.Open()

        Dim rd3 As MySqlDataReader
        Dim cmd3 As New MySqlCommand("UPDATE tableassistance SET cancellation = 1 WHERE table_name = '" & Form1.Table_1.Name & "'", con2)

        rd3 = cmd3.ExecuteReader

        MessageBox.Show("Wait for confirmation!", "System")
        Me.Close()
        Label2.Text = ""
    End If
End Sub

Я звоню loaddata() в моей форме загрузки.

1 Ответ

0 голосов
/ 18 февраля 2019

Сначала удалите эту строку:

  dgv_myOrder.Columns.Add(btn)

Не добавляйте кнопку в представление данных внутри кода, создайте его из конструктора и используйте привязку для других столбцов.

Шаги:

1.Создайте все ваши столбцы datagrdiview, используя кнопку добавления столбцов в правом верхнем углу представления данных

, так вы добавляете столбцы

2. После добавления столбцов связывайтекаждый столбец к связанному столбцу в базе данных, как это, вы можете получить это окно, когда вы нажимаете на EditColumns в конструкторе datagidview, изменяете DataPropertyName в свойствах каждого столбца, изменяете его на имя столбца с данными, который вам нуженчтобы просмотреть, но не добавить его к кнопке удаления столбца:

Связывание столбцов

3.перейдите к свойствам вашего столбца кнопки удаления в представлении данных, вы найдете свойство с именем DefalutCellStyle, внутри которого найдете NullValue, измените его на «Удалить».

Измените нулевое значение

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