删除行/删除行

问题描述 投票:0回答:2

我想在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'的成员

你能帮助我吗?

现在,我总结它后隐藏行但我想自动删除/删除行后我总结它不仅隐藏

谢谢

vb.net gridview rows
2个回答
0
投票

当没有行时,我不确定你要做什么,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

您应该能够根据需要定制它,每次需要将数据重新绑定到gridview时调用GetData()


0
投票

我解决了我的问题我无法从数据gridview中删除行但我从数据表中删除数据并在那之后绑定它感谢大家

© www.soinside.com 2019 - 2024. All rights reserved.