我想刪除我的listview中的重複項。這裏是我的代碼:ListView中的重複項目vb.net 2008
Imports System.Data.OleDb
Public Class frmQuizSelector
Private Sub cmdExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExit.Click
Me.Hide()
End Sub
Private Sub lvwQuizzes()
With Me.lvwListOfQuizzes
.FullRowSelect = True
.GridLines = False
.View = View.Details
.Columns.Add("QuizID", 1)
.Columns.Add("Quiz Title", 268)
End With
End Sub
Private Sub frmQuizSelector_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.cmdPrevQ.Visible = False
Me.cmdNextQ.Visible = False
lvwQuizzes()
Try
Dim dtb As New DataTable
Dim strSql As String = "SELECT * FROM tblQuestions"
AConn.Open()
Using dataadapter As New OleDbDataAdapter(strSql, AConn)
dataadapter.Fill(dtb)
End Using
AConn.Close()
Me.lvwListOfQuizzes.Items.Clear()
Dim i As Integer = 0
For i = 0 To dtb.Rows.Count - 1
Dim lv As New ListViewItem
lv.Text = dtb.Rows(i).Item("QuizID1")
lv.SubItems.Add(dtb.Rows(i).Item("QuizTitle"))
lv.SubItems.Add(dtb.Rows(i).Item("CourseSubject"))
lv.SubItems.Add(dtb.Rows(i).Item("QuestionNumber"))
lv.SubItems.Add(dtb.Rows(i).Item("ActualQuestion"))
lv.SubItems.Add(dtb.Rows(i).Item("Answer1"))
lv.SubItems.Add(dtb.Rows(i).Item("Answer2"))
lv.SubItems.Add(dtb.Rows(i).Item("Answer3"))
lv.SubItems.Add(dtb.Rows(i).Item("Answer4"))
Me.lvwListOfQuizzes.Items.Add(lv)
Next
Catch ex As Exception
MsgBox(ex.Message)
AConn.Close()
End Try
End Sub
Private Sub lvwListOfQuizzes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvwListOfQuizzes.Click
Me.cmdNextQ.Visible = True
Try
Dim strSql As String = "SELECT * FROM tblQuestions WHERE [QuizID1] = " & lvwListOfQuizzes.SelectedItems(0).SubItems(0).Text & ""
Dim dtb As New DataTable
AConn.Open()
Using dataadapter As New OleDbDataAdapter(strSql, AConn)
dataadapter.Fill(dtb)
End Using
AConn.Close()
For Each row As DataRow In dtb.Rows
Me.lblQuizName.Text = row("QuizTitle").ToString()
Me.lblCourseSubject.Text = row("CourseSubject").ToString()
Me.lblQNum.Text = row("QuestionNumber").ToString()
Me.lblQuestion.Text = row("ActualQuestion").ToString()
Me.lblA.Text = row("Answer1").ToString()
Me.lblB.Text = row("Answer2").ToString()
Me.lblC.Text = row("Answer3").ToString()
Me.lblD.Text = row("Answer4").ToString()
Next
Catch ex As Exception
MsgBox(ex.Message)
AConn.Close()
End Try
End Sub
上面的代碼在我的列表視圖中生成重複項。例如,我在我的數據庫中有五個測驗題目說「國家」(每個題目附有不同的問題),我的列表視圖顯示了所有五個相同的題目。我只需要它來只顯示一個,因爲它只是一個測驗題
您通常會如何防止將重複項添加到列表中?當您有要添加的項目時,您可以將其與列表中已有的每個項目進行比較,並且當且僅當您找不到匹配時才添加它。這種情況與此完全相同。考慮一下,拿起筆和紙,寫下你需要執行的步驟,然後嘗試編寫代碼來實現這些步驟。如果你在做這件事的時候遇到了問題,那麼THEN會是在這裏發表問題的時候。編程不存在於真空中。你如何在「現實生活」中做事情通常是你在編程時如何做。 – jmcilhinney
將項目添加到數組中,使用Linq Distinct過濾掉重複的項目,然後將它們添加到您的ListView https://msdn.microsoft.com/zh-cn/library/bb348436(v=vs.110).aspx – Werdna