database - VB.NET从另一个类引用新表单对象的 ListView

标签 database vb.net forms listview sqldatareader

在表单上,​​我有一个带有上下文菜单的 ListView 。

右键单击 ListView 项目会显示上下文菜单。

当我单击菜单按钮时,我希望发生以下情况:

将会出现一个名为 TaskLog 的表单,它只包含一个 ListView (这是我的代码):

Private Sub ShowLogToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ShowLogToolStripMenuItem.Click
    logform = New TaskLog()
    logform.task = "taskname"
    logform.server = "servername"
    logform.Show()
End Sub

该 ListView 在显示之前应填充数据库中的数据,因此我在任务日志表单的加载事件中具有以下内容

Public Class TaskLog
 Private db As Database = New Database
 Public task As String
 Public server As String

Private Sub TaskLog_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    db.connect()
    db.getTaskLog(task, server, Me)
End Sub
End Class

然后在数据库类 gettask 函数中我调用数据库,将数据存储在对象中,这一切都工作正常。这里唯一的问题是我的数据库对象无法找到 ListView 和表单,即使我将表单作为变量传递给此函数(frm 作为 TaskLog)。

    Public Function getTaskLog(taskname As String, server As String, frm As TaskLog) As Boolean

    'Declare sql command variable
    Dim command As New SqlCommand

    'Try to open db connection
    Try
        connection.Open()
        command.Connection = connection

        'Set query to command object text
        command.CommandText = "select * from tasklog where ltrim(rtrim(server)) Like'" & Trim(server) & "%' and ltrim(rtrim(task)) = '" & Trim(taskname) & "'"
        'Declare data reading pbject
        Dim rdr As SqlDataReader = command.ExecuteReader()

        'Perform operations while rows are returned from database

        While rdr.Read()

            'Store database entry to TaskData Object 
            taskLogData = New TaskData(rdr("frequency").ToString, rdr("start"), rdr("duration"), rdr("delay"), rdr("rescheduled"), rdr("forced"), rdr("task"), rdr("server"), rdr("email"), rdr("message"), rdr("status"), rdr("logtime"))

            Dim new_item As New  _
            ListViewItem(Trim(taskLogData.task_server.ToString))
            new_item.SubItems.Add(Trim(taskLogData.task_name.ToString))
            new_item.SubItems.Add(Trim(taskLogData.task_status.ToString))
            new_item.SubItems.Add(Trim(taskLogData.task_frequency.ToString))
            new_item.SubItems.Add(Trim(taskLogData.task_nextrun.ToString))
            new_item.SubItems.Add(Trim(taskLogData.task_forced.ToString))
            new_item.SubItems.Add(Trim(taskLogData.task_rescheduled.ToString))
            new_item.SubItems.Add(Trim(taskLogData.task_rescheduled.ToString))

            new_item.Group = frm.ListView1.Groups(Trim(taskData.task_status.ToString))

            frm.ListView1.Items.Add(new_item)

        End While

        Return True

    Catch ex As Exception 'If connection fails return error message
        MessageBox.Show("Error while retrieving records on table..." & ex.Message, "Load Records")
        Return True

    Finally 'After connection close database 
        connection.Close()
    End Try

End Function

上面函数中的以下行显示未设置对象实例的对象引用:

    frm.ListView1.Items.Add(new_item)

有人可以看到这个问题,并希望能提供一些帮助吗?我尝试了几件事,但仍然不确定在这里做什么最好。谢谢!!!!!!!

最佳答案

这一行

 new_item.Group = frm.ListView1.Groups(Trim(taskData.task_status.ToString))

指的是ListView1中应该存在的Group。如果不需要可以注释掉

关于database - VB.NET从另一个类引用新表单对象的 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941653/

相关文章:

安卓数据库索引

sql - 任何开源工具来比较 xml 和数据库行?

其他列的 SQL ORDER BY 行为?

database - 缺少 Oracle 数据库 11g TDE 主 key 的文档

c# - 如果我在类 System.Windows.Forms.Timer 上两次调用 Start() 会发生什么?

javascript - 两个 Action 形式

javascript - 检查至少一个复选框在表单提交时被选中

asp.net - 从 jQuery AJAX 调用动态填充 ASP.NET Gridview

vb.net - vb.net 中的 Google Chrome 浏览器内嵌框架

drupal - 如果编辑或添加表单,如何在 drupal 节点表单中检测?