This is a migrated thread and some comments may be shown as answers.

Removing Row and setting previous row as active.

2 Answers 117 Views
GridView
This is a migrated thread and some comments may be shown as answers.
James
Top achievements
Rank 1
James asked on 17 Oct 2013, 04:36 PM
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 Answers, 1 is accepted

Sort by
0
Brent
Top achievements
Rank 1
answered on 18 Oct 2013, 11:11 PM
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
0
Dess | Tech Support Engineer, Principal
Telerik team
answered on 21 Oct 2013, 08:50 AM
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 >>
Tags
GridView
Asked by
James
Top achievements
Rank 1
Answers by
Brent
Top achievements
Rank 1
Dess | Tech Support Engineer, Principal
Telerik team
Share this question
or