Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在listview中自动生成行号_Vb.net - Fatal编程技术网

Vb.net 在listview中自动生成行号

Vb.net 在listview中自动生成行号,vb.net,Vb.net,我正在从access数据库填充ListView数据。我要做的是添加自动生成的行号。为此,我使用以下代码 Private Sub row_num() Dim i As Integer For i = 0 To ListView1.Items.Count - 1 ListView1.Items(i).Text = i + 1.ToString Next End Sub 当我使用这段代码时,问题是数字替换了数据库中的第一列数据。 我需要的是在第一列中显示行号,

我正在从access数据库填充ListView数据。我要做的是添加自动生成的行号。为此,我使用以下代码

Private Sub row_num()
    Dim i As Integer
    For i = 0 To ListView1.Items.Count - 1
        ListView1.Items(i).Text = i + 1.ToString
    Next
End Sub
当我使用这段代码时,问题是数字替换了数据库中的第一列数据。 我需要的是在第一列中显示行号,然后在第2列和第3列中显示来自数据库的数据

like this :
   num     name        phone 
   1       Rabeea      0521234567
   2       mark        0527654321


Public Sub showlistview()
    Dim cyear As String
    If ComboBox1.Text = "2014" Then
        cyear = "pay_2014"
    ElseIf ComboBox1.Text = "2015" Then
        cyear = "pay_2015"
    ElseIf ComboBox1.Text = "2016" Then
        cyear = "pay_2016"
    ElseIf ComboBox1.Text = "2017" Then
        cyear = "pay_2017"
    ElseIf ComboBox1.Text = "2018" Then
        cyear = "pay_2018"
    ElseIf ComboBox1.Text = "2019" Then
        cyear = "pay_2019"
    End If

    Dim cmonth As String

    If ComboBox2.Text = "January_1" Then
        cmonth = "jan_1"
    ElseIf ComboBox2.Text = "February_2" Then
        cmonth = "feb_2"
    ElseIf ComboBox2.Text = "March_3" Then
        cmonth = "mar_3"
    ElseIf ComboBox2.Text = "April_4" Then
        cmonth = "apr_4"
    ElseIf ComboBox2.Text = "May_5" Then
        cmonth = "may_5"
    ElseIf ComboBox2.Text = "June_6" Then
        cmonth = "jun_6"
    ElseIf ComboBox2.Text = "July_7" Then
        cmonth = "jul_7"
    ElseIf ComboBox2.Text = "August_8" Then
        cmonth = "aug_8"
    ElseIf ComboBox2.Text = "September_9" Then
        cmonth = "sep_9"
    ElseIf ComboBox2.Text = "October_10" Then
        cmonth = "oct_10"
    ElseIf ComboBox2.Text = "November_11" Then
        cmonth = "nov_11"
    ElseIf ComboBox2.Text = "December_12" Then
        cmonth = "dec_12"
    End If

    Dim dt As New DataTable
    Dim ds As New DataSet
    ds.Tables.Add(dt)
    Dim da As New OleDbDataAdapter("select * from " & cyear & " where " & cmonth & "=0", con)
    da.Fill(dt)
    Dim myrow As DataRow
    For Each myrow In dt.Rows
        ListView1.Items.Add(myrow.Item(1))
        ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(2))

    Next
End Sub
我需要的是在第一列中显示行号,然后在第2列和第3列中显示来自数据库的数据

like this :
   num     name        phone 
   1       Rabeea      0521234567
   2       mark        0527654321


Public Sub showlistview()
    Dim cyear As String
    If ComboBox1.Text = "2014" Then
        cyear = "pay_2014"
    ElseIf ComboBox1.Text = "2015" Then
        cyear = "pay_2015"
    ElseIf ComboBox1.Text = "2016" Then
        cyear = "pay_2016"
    ElseIf ComboBox1.Text = "2017" Then
        cyear = "pay_2017"
    ElseIf ComboBox1.Text = "2018" Then
        cyear = "pay_2018"
    ElseIf ComboBox1.Text = "2019" Then
        cyear = "pay_2019"
    End If

    Dim cmonth As String

    If ComboBox2.Text = "January_1" Then
        cmonth = "jan_1"
    ElseIf ComboBox2.Text = "February_2" Then
        cmonth = "feb_2"
    ElseIf ComboBox2.Text = "March_3" Then
        cmonth = "mar_3"
    ElseIf ComboBox2.Text = "April_4" Then
        cmonth = "apr_4"
    ElseIf ComboBox2.Text = "May_5" Then
        cmonth = "may_5"
    ElseIf ComboBox2.Text = "June_6" Then
        cmonth = "jun_6"
    ElseIf ComboBox2.Text = "July_7" Then
        cmonth = "jul_7"
    ElseIf ComboBox2.Text = "August_8" Then
        cmonth = "aug_8"
    ElseIf ComboBox2.Text = "September_9" Then
        cmonth = "sep_9"
    ElseIf ComboBox2.Text = "October_10" Then
        cmonth = "oct_10"
    ElseIf ComboBox2.Text = "November_11" Then
        cmonth = "nov_11"
    ElseIf ComboBox2.Text = "December_12" Then
        cmonth = "dec_12"
    End If

    Dim dt As New DataTable
    Dim ds As New DataSet
    ds.Tables.Add(dt)
    Dim da As New OleDbDataAdapter("select * from " & cyear & " where " & cmonth & "=0", con)
    da.Fill(dt)
    Dim myrow As DataRow
    For Each myrow In dt.Rows
        ListView1.Items.Add(myrow.Item(1))
        ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(2))

    Next
End Sub
因此,事实证明,问题与行号没有任何关系,只是因为您在错误的列中显示了实际数据。您已经知道如何在特定列中显示数据,因为您已经在这样做了:

ListView1.Items.Add(myrow.Item(1))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(2))
该代码将数据放入第一列和第二列。如果你真正想要的是在第一列有一个数字,然后在第二列和第三列有你的数据,那么最明显的做法是在第一列有一个数字,在第二列和第三列有你的数据。您知道如何将文本放在第一列,因为您已经在这样做了,所以请将该文本作为数字。您知道如何将文本放入第二列,因为您已经在这样做了,所以请将该文本设置为
DataRow
中的相应字段。如果您知道如何将文本添加到第二列,那么您就知道如何将文本添加到第三列以及后续的每一列

替代语法:

With ListView1.Items.Add(ListView1.Items.Count + 1)
    .SubItems.Add(myRow.Item(2))
End With
问题已解决:)


首先,
i+1.ToString
应该是
(i+1.ToString
)。这种差异可能看起来不重要,但事实并非如此。至于这个问题,你认为行号会去哪里?我们无法读懂你的心思,所以在我们告诉你如何实现之前,你必须告诉我们你想要实现什么。另外,为什么要在添加行时循环查看
列表视图的现有行而不是添加行号呢?填充一个非常好的数据表(
da.fill(dt)
)将其用作DataGridView的数据源(
myDGV.datasource=dt
),可以解决大部分问题。为数据创建唯一Id通常是数据库的工作。但数据库中Id中的数据不按顺序排列:(所有我想要的都是为行添加序列号,以了解列表视图中有多少用户。您不应该关心数据库如何存储它。您在SQLok中使用ORDER BY获取它时将其放入序列,但当我删除用户3时,例如,它将是1 2 4 5,如果它不起作用,则您做错了。如果我们不知道您做了什么,则我们不知道有什么问题。哇。这太糟糕了。为什么这么糟糕???@SamAxe我想知道现在你是否可以请@SamAxe如果你真的想学习,把代码发布到codereview.stackexchange.com初学者,那么如果你能告诉我我错在哪里,这将对我有很大帮助@SamAxe
Sub lstvpop()
    ListView1.Items.Clear()
    Dim item As ListViewItem
    Dim reader As SqlDataReader = db.fetchRows("Select * from tbl_class")
    While (reader.Read())
        item = ListView1.Items.Add(ListView1.Items.Count + 1)
        item.Tag = reader(0)
        item.SubItems.Add(reader(1).ToString())
    End While

End Sub