2017-12-14 16 views
0

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 '

당신이 도와 드릴까요'의 멤버가 아닙니다 ' 나를? 지금

, 나는 그것을 요약 한 후 행을 숨기하지만 난 자동 삭제하려면/나는 그것을뿐만 아니라

감사

+0

그리드를 결합하면 데이터인가 ? 'DataSource' 속성을 설정하는 것과 마찬가지로? 그렇다면 데이터 소스에서 데이터를 제거하고 그리드를 조작하는 대신 다시 바인드해야합니다. – Crowcoder

답변

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 

당신이 rowData를 사용할 수 있습니다 : 행이되지는있는 gridview는 대신 다음

당신이해야 할 빈 것 로직이 처리 된 후 기준 당신은 여러분의 필요에이를 조정할 수 있어야 행

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 내가 데이터의 gridview에서 행을 제거하지 못할하지만 난 데이터 테이블에서 데이터를 제거하고 그게 전부 모두 감사 후 바인딩 내 문제 를 해결

+0

나는 지금 모든 코드를 보여주었습니다. 당신이 저를 도울 수 있기를 바랍니다. 감사합니다. –

+0

내 대답을 편집했습니다. – Arcane92

0

에 데이터를 리 바인드해야