gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:28:52 27 4
gpt4 key购买 nike

在表单上我有一个带有上下文菜单的 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 在显示之前应填充数据库中的数据,因此我在 TaskLog 表单的加载事件中有以下内容

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com