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

时间:2014-02-20 11:19:02

标签: php vb.net vb.net-2010

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'.

这些是代码:

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

2 个答案:

答案 0 :(得分:0)

尝试这种方法,并根据您的情况实施......

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

答案 1 :(得分:0)

您可以尝试这样做:它会在尝试将其添加到子项之前检查每个值:

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
相关问题