2017-12-14 3 views
0

Ich möchte meine Zeilen in gridview löschen, aber wenn ich viele Code versuche, ist der Fehler gleich.Zeile löschen/Zeile entfernen

Wenn ich versuche, diese

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 

die Fehler

entfernen‘ist kein Mitglied von 'System.Web.UI.WebControls.GridViewRowCollection'

Können Sie helfen mich?

jetzt verstecken i die Zeile, nachdem ich es zusammenzufassen, aber ich mag automatisch löschen/Zeile entfernen, nachdem ich es nur

Summe nicht verstecken

Dank

+0

Sind Daten, die Sie das Raster Bindung ? Wie beim Einstellen seiner 'DataSource' Eigenschaft? In diesem Fall sollten Sie die Daten aus der Datenquelle entfernen und erneut binden, anstatt zu versuchen, das Raster zu bearbeiten. – Crowcoder

Antwort

0

Ich bin nicht sicher, was Sie zu tun versuchen, wenn es gibt keine Zeilen, würde die gridview stattdessen folgende

Sie tun sollten, die leer sein:

'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 

Wenn die Daten in der gridview Handhabung können Sie RowData verwenden Gebunden, könnten Sie dann eine separate Funktion aufrufen, um eine Zeile zu behandeln Löschen nach Ihrer Logik behandelt wird, in dem die Kriterien erfüllt eine Reihe

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 

Sie löschen sollten diese in der Lage sein, maßgeschneiderte auf Ihre Bedürfnisse, gerade genannt GetData () jedes Mal wenn Sie Daten an die gridview

+0

Ich war alle Code jetzt zeigen, ich hoffe, Sie können mir helfen, danke –

+0

Bearbeitete meine Antwort – Arcane92

0

ich mein Problem gelöst rebind muss ich kippe Zeilen aus Daten gridview entfernen, aber ich Daten aus Datentabelle entfernen und nach das ist dankt allen binden