Removing Row and setting previous row as active.

3 posts, 0 answers
  1. James
    James avatar
    2 posts
    Member since:
    Oct 2013

    Posted 17 Oct 2013 Link to this post

    What is the proper way to remove a row and set the previous row as active(if # of rows > 0) on a sorted and/or filtered and/or grouped radGridView?
    I populate my radGridView manually with a stored procedure.
    The first column in the rGV is a button column when the user presses the button the row should be removed and the previous row set as active/current.
    I had this working perfectly when using the DataGridView included with VS2012 but now I'm getting an IndexOutOfRangeException thrown.

     

    Private Sub DataGridView4_CellContentClick(ByVal sender As System.Object, ByVal e As Telerik.WinControls.UI.GridViewCellEventArgs) Handles DataGridView4.CellClick
        If e.ColumnIndex = 0 Then
            intDataGridSelectedIndexRenewalC = DataGridView4.CurrentRow.Index
            If sps_EIPHasBeenBilled(DataGridView4.CurrentRow.Cells("Policy_no").Value.ToString) Then
                RenewalsCommercialMarkComplete()
            Else
                MsgBox("Unable to Mark This Policy as Complete! " & DataGridView4.CurrentRow.Cells("Policy_no").Value.ToString & " Has Not been Billed Yet.", vbOKOnly)
            End If
        End If
    End Sub
     
    Private Sub RenewalsCommercialMarkComplete()
        Dim UpdateStatus As Boolean
        Dim SQLQuery As String = "exec " & strDefaultDatabase & ".dbo.spu_EIPRenewalMarkCompleteByRenewalID '" & DataGridView4.CurrentRow.Cells("RenewalsID").Value & "', '" & strLoggedInUserFullName & "'"
     
        If MsgBox("Do you wish to mark this record: " & DataGridView4.CurrentRow.Cells("Customer").Value.ToString & ": " & DataGridView4.CurrentRow.Cells("Policy_no").Value.ToString & " as complete?", vbYesNo + vbQuestion, "Renewal Mark Complete") = vbYes Then
            UpdateStatus = WriteSQL_Data(SQLQuery)
            If UpdateStatus Then
                MsgBox("Record: " & DataGridView4.CurrentRow.Cells("Policy_no").Value.ToString & " Marked As Complete!", MsgBoxStyle.OkOnly)
                DataGridView4.ChildRows(intDataGridSelectedIndexRenewalC).Delete()
                If (intDataGridSelectedIndexRenewalC - 1) > 0 Then
                    DataGridView4.ChildRows(intDataGridSelectedIndexRenewalC - 1).IsSelected = True
                    DataGridView4.ChildRows(intDataGridSelectedIndexRenewalC - 1).IsCurrent = True
                End If
            Else
                MsgBox("Unable to Connect to Database Please see your System Administrator with Error: Summary - ButtonOk_Click: ", vbOK)
            End If
        Else
            MsgBox("The Operation was Cancelled", vbOKOnly)
        End If
    End Sub
  2. Brent
    Brent avatar
    6 posts
    Member since:
    Jun 2012

    Posted 18 Oct 2013 Link to this post

    It seems the errors are only occurring when the rGV has grouping applied.
    This means I need to check for grouping before attempting to remove the row and set the previous row as active.
    The code I posted works fine for a filtered rGV.
    I'm looking for an example of removing a row from a grouped rGV, I found the following code but the TryCast is not working(always returns nothing).
    Private Sub DeleteGroupRow()
     Dim groupRow As GridViewGroupRowInfo = TryCast(radGridView4.CurrentRow, GridViewGroupRowInfo)
     If groupRow IsNot Nothing Then 
       groupRow.ChildRows(itDataGridSelectedIndexRenewalC).Delete()
     End If
    End Sub
  3. Dess | Tech Support Engineer, Sr.
    Admin
    Dess | Tech Support Engineer, Sr.  avatar
    3945 posts

    Posted 21 Oct 2013 Link to this post

    Hello,

    Thank you for contacting Telerik Support.

    Please have a look at the following code snippet, demonstrating current row removing when clicking on the GridCommandCellElement and selecting the previous row. The sample code should work properly for grouped grid, as well as for filtered grid:
    Public Class Form1
        Sub New()
            InitializeComponent()
            Me.RadGridView1.EnableFiltering = True
     
            Dim idColumn As New GridViewTextBoxColumn("ID column")
            RadGridView1.MasterTemplate.Columns.Add(idColumn)
     
            Dim commandColumn As New GridViewCommandColumn("Command column")
            RadGridView1.MasterTemplate.Columns.Add(commandColumn)
     
            Dim textBoxColumn As New GridViewTextBoxColumn("Title column")
            RadGridView1.MasterTemplate.Columns.Add(textBoxColumn)
     
            Dim checkBoxColumn As New GridViewCheckBoxColumn("Is checked")
            RadGridView1.MasterTemplate.Columns.Add(checkBoxColumn)
     
            Dim isChecked As Boolean = False
            For i As Integer = 0 To 9
                If i Mod 2 = 0 Then
                    isChecked = True
                Else
                    isChecked = False
                End If
                Me.RadGridView1.Rows.Add(i + 1, "click", "sample title", isChecked)
            Next
     
            AddHandler Me.RadGridView1.CommandCellClick, AddressOf radGridView1_CommandCellClick
     
        End Sub
       
        Private Sub radGridView1_CommandCellClick(sender As Object, e As EventArgs)
            Dim commandCell As GridCommandCellElement = TryCast(sender, GridCommandCellElement)
            If commandCell IsNot Nothing AndAlso commandCell.RowIndex >= 0 Then
                commandCell.GridViewElement.Navigator.SelectPreviousRow(1)
                commandCell.RowInfo.Delete()
            End If
        End Sub
    End Class

    I hope this information helps. Should you have further questions, I would be glad to help.

    Regards,
    Desislava
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
Back to Top