简体   繁体   English

如何将项目添加到列表视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM