【问题标题】:Vb.Net update Datagridview in main form when save data in another form以另一种形式保存数据时,Vb.Net在主形式中更新Datagridview
【发布时间】:2019-05-30 21:05:33
【问题描述】:

这是我将数据从 sql server 显示到 Datagridview 的函数

 Private Function getpdfinfo1() As DataTable
    DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

    Dim dtpi As New DataTable
    Dim connString As String = ConfigurationManager.ConnectionStrings("pdflib.My.MySettings.hazimdbConnectionString").ConnectionString

    Using conn As New SqlConnection(connString)
        Using cmd As New SqlCommand("select idpdf as  ID,pdfname as  Title, categories as Categories , extension as Extension from pdfinfo where ( username='" & Label10.Text & "' ) ", conn)
            conn.Open()
            Dim reader As SqlDataReader = cmd.ExecuteReader()
            dtpi.Load(reader)
            conn.Close()
        End Using
    End Using
    Return dtpi

End Function

在主窗体加载中,即使我调用函数getpdfinfo1(),如下所示

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = getpdfinfo1()
End Sub

我从另一个表单保存数据。保存数据的按钮点击事件如下图所示

 cmd = New SqlCommand("Insert into pdfinfo (pdfname,pdfdata,categories,username,iduser,extension) values (@pdfname,@pdfdata,@categories,@username,@iduser,@extension) ", connection)
        connection.Open()
        cmd.Parameters.Add(New SqlParameter("@pdfname", SqlDbType.NVarChar, 100)).Value = TextBox2.Text
        cmd.Parameters.Add(New SqlParameter("@categories", SqlDbType.NVarChar, 100)).Value = ComboBox1.Text
        cmd.Parameters.Add(New SqlParameter("@username", SqlDbType.NVarChar, 100)).Value = TextBox4.Text
        cmd.Parameters.Add(New SqlParameter("@iduser", SqlDbType.Int)).Value = Label6.Text
        cmd.Parameters.Add(New SqlParameter("@extension", SqlDbType.NChar, 10)).Value = Path.GetExtension(ofd.FileName)
        Dim fs As New FileStream(ofd.FileName, FileMode.Open, FileAccess.Read)
        Dim br As New BinaryReader(fs)
        Dim file() As Byte = br.ReadBytes(br.BaseStream.Length)
        cmd.Parameters.Add(New SqlParameter("@pdfdata", SqlDbType.VarBinary)).Value = file
        cmd.ExecuteNonQuery()
        Label8.Text = "Upload Completed"

所以我希望在(保存数据表单)中单击“保存”按钮时 主窗体(窗体 2)中的 Datagridview** 将自动更新。

或者,Sql数据发生变化时如何创建函数更新Datagridview。

【问题讨论】:

  • 像很多人一样,您这样做是错误的。您不会以第二种形式将数据保存到数据库中,然后以第一种形式从数据库中取回该数据。您将第二个表单中的数据获取到第一个表单中,并首先更新绑定到您的网格的DataTable。这意味着第一个表单已经在数据库之前使用新数据进行了更新。然后,您使用最初用于获取数据的同一数据适配器将更改从 DataTable 保存到数据库。这意味着使用数据适配器而不是数据读取器。
  • Datagridview 仅用于在主窗体中显示
  • 这无关紧要。您可以按照您想要的方式进行操作,也可以以正确的方式进行操作。您的选择。
  • 我已经解决了,我会发布解决方案。谢谢

标签: sql-server vb.net datagridview auto-update


【解决方案1】:

getpdfinfo1 函数是私有的,将其设为公共函数并在保存按钮单击事件中调用此函数。要从其他表单调用函数,您只需在表单 name.function 前面加上前缀即可。

【讨论】:

    【解决方案2】:
    1. 创建一个数据类,其中包含要在表格 2 中修改的所有数据
    2. 在表格 2 中声明一个数据类属性(朋友或公共)
    3. 在 Form 2 上按 Save 时刷新/填充数据类
    4. 从 2 保存按钮设置为接受按钮
    5. 从主窗体调用窗体 2 检查对话框结果确定
    6. 当 dialogresult = OK 刷新 datagridview / 使用保存数据 sql/...
    7. 如果您不想先写入/读取 sql 来刷新 dgv,请注意您的 sql 事务已成功完成。这很重要,以防止用户在 datagridview 中看到与您的数据库中不同的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 2012-10-04
      • 1970-01-01
      • 2012-10-23
      相关资源
      最近更新 更多