[英]How to add item to the listview
The Listview add Item's but the following error shows. Listview添加项,但显示以下错误 。
Overload resolution failed beacause no 'ADD' can be called with these arguments:
'Public Function Add(text As String) As System.Windows.Forms.ListViewItem.ListViewSubItem':
Argument matching parameter 'text' cannot convert from 'DBNull' to 'String'.
'Public Function Add(item As System.Windows.Forms.ListViewItem.ListViewSubItem) As System.Windows.Forms.ListViewItem.ListViewSubItem':
Argument matching parameter 'item' cannot convert from 'DBNull' to 'ListViewSubItem'.
THESE IS THE CODE: 这些是代码:
ub loadReservedApplication()
'Try
Dim sql As String = "SELECT id," & _
"(SELECT name FROM `applicants` WHERE `applicants`.`id`=`applicant_id` ) as applicants," & _
"(SELECT filesize FROM `applicants` WHERE `applicants`.`id`=`applicant_id` ) as filesize," & _
"(SELECT img FROM `applicants` WHERE `applicants`.`id`=`applicant_id` ) as pic," & _
"(SELECT `jobTitle` FROM `jobs` WHERE `jobs`.`id`=`job_id`) as job,(SELECT count(*) FROM `applicants_doc` WHERE `application_id`= `job_applicant`.`id`) as docs,(SELECT `contact_number` FROM `applicants` WHERE `applicants`.`id`=`applicant_id`) as contact FROM `job_applicant`ORDER BY `job_applicant`.`date` DESC "
tb = execute_and_fetch(sql)
Dim ctr As Integer = 1
ListView1.Items.Clear()
For Each r As DataRow In tb.Rows
Dim lst As New ListViewItem
ListView1.Items.Add(lst)
lst.Text = ctr
lst.SubItems.Add(r("applicants"))
If IsDBNull(r("job")) Then r("job") = "N/a"
lst.SubItems.Add(r("job"))
lst.SubItems.Add(r("docs"))
lst.SubItems.Add(r("contact"))
lst.Tag = r("id")
ctr += 1
Next
'Catch ex As Exception
' MsgBox(ex.Message)
'End Try
End Sub
Try this method, and implement to your cases... 尝试这种方法,并针对您的情况实施...
Public Sub loadtitle()
Dim SQL As String = "SELECT * FROM titles"
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim i As Integer
With myCommand
.CommandText = SQL
.Connection = conn
End With
With myAdapter
.SelectCommand = myCommand
.Fill(myData)
End With
titlelist.Items.Clear()
For i = 0 To myData.Rows.Count - 1
With titlelist
.Items.Add(myData.Rows(i)("title_id"))
With .Items(.Items.Count - 1).SubItems
.Add(myData.Rows(i)("title_name"))
.Add(myData.Rows(i)("title_cat"))
.Add(myData.Rows(i)("title_format"))
.Add(myData.Rows(i)("title_copies"))
.Add(myData.Rows(i)("title_rate"))
End With
End With
Next
End Sub
You could try this: it checks every value before trying to add it in to the subitems: 您可以尝试这样做:它会先检查每个值,然后再尝试将其添加到子项中:
For Each r As DataRow In tb.Rows
Dim lst As New ListViewItem
ListView1.Items.Add(lst)
lst.Text = ctr
if isDBNull(r("applicants")) then
lst.SubItems.Add("N/a")
else
lst.SubItems.Add(r("applicants"))
end if
if isDBNull(r("job")) then
lst.SubItems.Add("N/a")
else
lst.SubItems.Add(r("job"))
end if
if isDBNull(r("docs")) then
lst.SubItems.Add("N/a")
else
lst.SubItems.Add(r("docs"))
end if
if isDBNull(r("contact")) then
lst.SubItems.Add("N/a")
else
lst.SubItems.Add(r("contact"))
end if
if isDBNull(r("id")) then
lst.Tag("N/a")
else
lst.Tag(r("id"))
end if
ctr += 1
Next
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.