Vb.net 在listview中自动生成行号
我正在从access数据库填充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 当我使用这段代码时,问题是数字替换了数据库中的第一列数据。 我需要的是在第一列中显示行号,
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