【问题标题】:Update Selected Row DataGridView更新选定行 DataGridView
【发布时间】:2020-05-13 21:42:25
【问题描述】:

我正在构建一个用 Visual Basic.NET 编写的小应用程序,但我需要您的帮助。我有 DataGridView 来显示我的数据库,我想让“更新”按钮从 DataGridView 更新到数据库。但在更新之前,我想像这样在 DataGridView 中选择行:

并显示到文本框。因此,我从文本框进行了更改以更新我的数据库。怎么做?

这是我的更新代码:

Private Sub btnPesEdit_Click(sender As Object, e As EventArgs) Handles btnPesEdit.Click
        Koneksi()

        Dim konfEdit As DialogResult = MsgBox("Apakah data yang di-update sudah benar?",
                                             MessageBoxButtons.YesNo, "Konfirmasi")

        Try
            str = "UPDATE data_pesanan SET (@namakons, @almtkons, @tglpesan, @jenispaket, @jmlpesan, @totaluang) WHERE (@kodekons)"


            comm = New MySqlCommand(str, conn)

            comm.Parameters.AddWithValue("@kodeKons", txtPesKodeKonsu.Text)
            comm.Parameters.AddWithValue("@namakons", txtPesNamaKonsu.Text)
            comm.Parameters.AddWithValue("@almtkons", txtPesAlmtKonsu.Text)
            dtPesTglPesan.CustomFormat = "dd-MM-yyyy"
            comm.Parameters.AddWithValue("@tglpesan", dtPesTglPesan.Value)
            comm.Parameters.AddWithValue("@jenispaket", lblPesJenisPkt.Text)
            comm.Parameters.AddWithValue("@jmlpesan", Convert.ToInt32(txtPesJmlPesan.Text))
            comm.Parameters.AddWithValue("@totaluang", Convert.ToInt32(lblPesTotal.Text))

            comm.ExecuteNonQuery()
            conn.Close()
        Catch ex As Exception
            MsgBox(ex.InnerException.Message)
            'MsgBox(ex.Message)
        End Try
    End Sub

这是我从数据库显示到 DataGridView 的代码:

Private Sub tablePesanan()
        Koneksi()

        comm = New MySqlCommand("select * from data_pesanan", conn)
        dataAdap = New MySqlDataAdapter(comm)
        Dim dataTbl As New DataTable
        dataAdap.Fill(dataTbl)
        tblPesList.DataSource = dataTbl
        tblPesList.ReadOnly = True
    End Sub

注意: 如果我的英语不好,我很抱歉。我希望你明白我在说什么。

【问题讨论】:

  • 贴代码时,建议将实际代码粘贴到问题中。大多数人不会重新输入您的代码,您的问题几乎不会得到回应。我建议您研究 TextBox... 示例的“绑定”... Binding b = new Binding("Text", GridTable, "column1"); textBox1.DataBindings.Add(b);... 其中“GridTable”是DataTable 数据源,“column1”是表中要显示的字段。我还建议访问 SO HELP – How to ask 页面。
  • 谢谢你纠正我:)
  • 为什么不直接在网格中进行更改?
  • 对不起。我不明白。可以举个例子吗?

标签: vb.net datagridview


【解决方案1】:

按照 cmets 中的建议,您应该使用数据绑定。您应该将 DataTable 绑定到 BindingSource,然后将其绑定到网格和其他控件,例如

myBindingSource.DataSource = myDataTable
myDataGridView.DataSource = myBindingSource
myTextBox.DataBindings.Add("Text", myBindingSource, "ColumnName")

您可以通过这种方式将任意数量的单独控件绑定到任意数量的列。只要确保绑定适当的控件属性即可。 Text 用于TextBox,但SelectedValue 用于ComboBoxValue 用于DateTimePicker 等。还要注意DateTimePicker 并不真正支持绑定可空数据,因此,如果您的数据可能在日期列中包含空值,您将需要一些手动干预。

当需要保存数据时,您需要确保在实际保存之前提交任何待处理的编辑,例如

Validate()
myBindingSource.EndEdit()
myDataAdapter.Update(myDataTable)

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多