none
dataGridView 刪除 RRS feed

  • 問題

  • 小弟使用 VB 2010

    再刪除 dataGridView 表中出現問題

    例如我的 dataGridView  中有10筆資料 ,其中5筆的第1個欄位為"1"

    而我想刪除這欄位為"1"的資料

    程式如下:

     For i As Integer = dataGridView1.Rows.Count - 1 To 0 Step -1
                            If dataGridView1.Item(0, i).Value = "1" Then
                               dataGridView1.Rows.RemoveAt(i)
                            End If
                        Next

    請問為什麼會出錯呢?


    0.0

    2012年5月5日 上午 02:32

解答

  • 我用下列程式碼嘗試模擬你的狀況,並沒出現你所說的問題,或許你可以說明一下你遇到的錯誤訊息為何?還是比較下列的程式碼跟你得有什麼不同。

    Imports System.Data
    Imports System.Type
    
    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            Dim dt As New DataTable
            dt.Columns.AddRange(New DataColumn() {New DataColumn("c1", Type.GetType("System.Int32")), New DataColumn("c2", Type.GetType("System.String"))})
            For i As Integer = 1 To 10
                Dim dr As DataRow = dt.NewRow()
                dr(0) = i
                dr(1) = "Row" + i.ToString()
                dt.Rows.Add(dr)
            Next
    
            Dim dr1 As DataRow = dt.NewRow()
            dr1(0) = 1
            dr1(1) = "aaa"
            dt.Rows.Add(dr1)
    
            Dim dr2 As DataRow = dt.NewRow()
            dr2(0) = 1
            dr2(1) = "bbb"
            dt.Rows.Add(dr2)
    
            DataGridView1.DataSource = dt
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
                If DataGridView1.Item(0, i).Value = "1" Then
                    DataGridView1.Rows.RemoveAt(i)
                End If
            Next
        End Sub
    End Class
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/


    2012年5月5日 上午 11:43

所有回覆

  • 你的 DataGridView 的資料是怎麼繫結的 ?

    如果是以 DataSource 來繫結, 建議你應該對 DataSource 來源處理, 會比對 DataGridView 來處理的好.

    另外, 發問時請養成習慣, 明確告知錯誤為何, 你只問 "請問為什麼會出錯呢", 我得說, 這種問法很爛, 因為浪費別人的時間去猜你真正的問題在哪裡, 你在這論壇也問過一段時間, 理當不該再犯這類的問題才是.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2012年5月5日 上午 03:01
    版主
  • 請問看到什麼錯誤訊息?
    2012年5月5日 上午 05:33
  • 我用下列程式碼嘗試模擬你的狀況,並沒出現你所說的問題,或許你可以說明一下你遇到的錯誤訊息為何?還是比較下列的程式碼跟你得有什麼不同。

    Imports System.Data
    Imports System.Type
    
    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            Dim dt As New DataTable
            dt.Columns.AddRange(New DataColumn() {New DataColumn("c1", Type.GetType("System.Int32")), New DataColumn("c2", Type.GetType("System.String"))})
            For i As Integer = 1 To 10
                Dim dr As DataRow = dt.NewRow()
                dr(0) = i
                dr(1) = "Row" + i.ToString()
                dt.Rows.Add(dr)
            Next
    
            Dim dr1 As DataRow = dt.NewRow()
            dr1(0) = 1
            dr1(1) = "aaa"
            dt.Rows.Add(dr1)
    
            Dim dr2 As DataRow = dt.NewRow()
            dr2(0) = 1
            dr2(1) = "bbb"
            dt.Rows.Add(dr2)
    
            DataGridView1.DataSource = dt
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
                If DataGridView1.Item(0, i).Value = "1" Then
                    DataGridView1.Rows.RemoveAt(i)
                End If
            Next
        End Sub
    End Class
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/


    2012年5月5日 上午 11:43