删除行 /删除行



我想在gridview中删除我的行,但是当我尝试许多代码时,错误是相同的。

当我尝试这个

Using sqlCon As New SqlConnection(PyrDLL.Koneksi.ConnectionString)
        Using cmd As New SqlCommand()
            cmd.CommandText = "xyz"
            cmd.Connection = sqlCon
            sqlCon.Open()
            Dim da As New SqlDataAdapter(cmd)
            Dim dt As New DataTable()
            da.Fill(dt)
            Gridview1.DataSource = dt
            Gridview1.DataBind()
            sqlCon.Close()
            If Gridview1.Rows.Count = 0 Then
                Dim dtempty As DataTable = Nothing
                dtempty = (DirectCast(Gridview1.DataSource, DataTable)).Clone()
                dtempty.Rows.Add(dtempty.NewRow())
                Gridview1.DataSource = dtempty
                Gridview1.DataBind()
                Gridview1.Rows(0).Visible = False
                'Gridview1.Rows(0).Controls.Clear()
            Else
                For i As Integer = 0 To dt.Rows.Count - 1
                    dt.Rows(i)("rupiah") = PyrDLL.Decrypt(dt.Rows(i)("rupiah"))
                    dt.Rows(i)("rupiah") = Decimal.Parse(dt.Rows(i)("rupiah")).ToString()
                    'i = i + 1
                Next
                Gridview1.DataBind()
                For i As Integer = Gridview1.Rows.Count - 1 To 1 Step -1
                    Dim row As GridViewRow = Gridview1.Rows(i)
                    Dim prevrow As GridViewRow = Gridview1.Rows(i - 1)
                    If (TryCast(Gridview1.Rows(i).Cells(1).FindControl("lblketerangan"), Label).Text.ToString() = TryCast(Gridview1.Rows(i - 1).Cells(1).FindControl("lblketerangan"), Label).Text.ToString()) And (TryCast(Gridview1.Rows(i).Cells(0).FindControl("lblcomp"), Label).Text.ToString() = TryCast(Gridview1.Rows(i - 1).Cells(0).FindControl("lblcomp"), Label).Text.ToString()) Then
                        Dim total As Integer = Convert.ToDecimal(TryCast(Gridview1.Rows(i - 1).Cells(2).FindControl("lblrupiah"), Label).Text)
                        Dim total2 As Integer = Convert.ToDecimal(TryCast(Gridview1.Rows(i).Cells(2).FindControl("lblrupiah"), Label).Text)
                        Dim total3 As Decimal
                        total3 = total + total2
                        DirectCast(Gridview1.Rows(i - 1).Cells(2).FindControl("lblrupiah"), Label).Text = Decimal.Parse(total3).ToString()
                        row.Visible = False
                        'Gridview1.Rows.Remove(Gridview1.Rows(i)) <--- if i comment here its run without problem
                    End If
                Next
            End If
        End Using
    End Using

错误

删除'不是'system.web.ui.webcontrols.gridviewrowcollection'

你能帮我吗?

现在,我总结一下后隐藏了行,但是我想自动删除/删除行,不仅是hide hide

谢谢

我不确定当没有行时您要做什么,gridview将为空

您应该做以下操作:

'Call GetData() every time you want to bind data to the gridview
Private Function GetData()
    Gridview1.DataSource = Nothing
    Gridview1.DataBind()
    Dim strQuery = "SELECT..."
    Dim dt As New DataTable()
    Using sqlCon As New SqlConnection(PyrDLL.Koneksi.ConnectionString)
        Using cmd As New SqlCommand(strQuery, sqlCon)
        'Add cmd parameters as required to prevent SqlInjection
        sqlCon.Open()
            Using ada As New SqlDataAdapter(cmd)
                ada.Fill(dt)
                Gridview1.DataSource = dt
                Gridview1.DataBind()
            End Using
        End Using
    End Using
End Function

在处理GridView中的数据时,您可以使用RowDatabound,然后可以调用单独的函数来处理删除逻辑后,在满足条件以删除行以删除行

之后
Protected Sub Gridview1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles Gridview1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        'Handle databound logic
    End If
End Sub

您应该能够根据您的需求来量身定制它,每次您需要重新启用数据时,都称为GetData()

我解决了我的问题我无法从数据GridView中删除行,但我从数据表中删除数据并在此之后绑定。谢谢大家

最新更新