To reproduce: use the following code snippet and try to delete a child row: public Form1() { InitializeComponent(); DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("ParentId", typeof(int)); dt.Columns.Add("Name", typeof(string)); for (int i = 0; i < 5; i++) { dt.Rows.Add(i, null, "Item" + i); } Random rand = new Random(); for (int i = 5; i < 30; i++) { dt.Rows.Add(i, rand.Next(0, 5), "Child item" + i); } this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "Id", "ParentId"); this.radGridView1.DataSource = dt; this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; this.radGridView1.UserDeletingRow += radGridView1_UserDeletingRow; } private void radGridView1_UserDeletingRow(object sender, Telerik.WinControls.UI.GridViewRowCancelEventArgs e) { if (this.radGridView1.CurrentRow.HasChildRows()) { DialogResult dialogResult = MessageBox.Show("Are you sure you want to delete this row?", "Delete Row confirmation", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { e.Cancel = true; } } } Workaround: use the RadGridView.CurrentRow.ChildRows.Count property.