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

BUG ShowInsertRow="False" not respected

1 Answer 70 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Simon
Top achievements
Rank 1
Simon asked on 11 Oct 2011, 11:34 PM
Hi,

I've found a bug with the ShowInsertRow property, which I hope you can fix ASAP.

BUG
When setting  ShowInsertRow="False" in XAML, you can easily make it visible again after adding a new row.

STEPS TO REPRODUCE
1. Hook up a RadButton as below...
<telerik:RadButton Content="Add"
                                                   Margin="0,0,5,0"
                                                   Command="telerik:RadGridViewCommands.BeginInsert"
                                                   CommandTarget="{Binding ElementName=MyGridView}"
                                                   Width="45" />

2. Now click the above button to insert a new row.
3. Now click any column header to sort by that row.
4. The ShowInsertRow is now visible.


After further testing this seems to relate to when the AddingNewDataItem event is handled in the behind. The code below runs on insert then if you click cancel button  (via telerik:RadGridViewCommands.CancelRowEdit command) the ShowInsertRow is made visible.
private void MyRadGridView_AddingNewDataItem(object sender, Telerik.Windows.Controls.GridView.GridViewAddingNewEventArgs e) 
{
    var grid = e.OwnerGridViewItemsControl;
    e.NewObject = ViewModel.CreateNewRecord(); 
    _newRecord = e.NewObject as MyObject; 
    //grid.CurrentColumn = grid.Columns[0];  //Causes an error on Save command 
}

Also when you click save button (telerik:RadGridViewCommands.CommitEdit command) - an unhandled exception is thrown - due to the CurrentColumn being set. Take this last line out and you don't get the error!.

1 Answer, 1 is accepted

Sort by
0
Nedyalko Nikolov
Telerik team
answered on 15 Oct 2011, 03:28 PM
Hello Simon,

We are aware of such behavior of the ShowInsertRow feature. I'll try to explain what causes the problem. When "Insert" key is pressed RadGridView should add a new item to the collection. The adding process has two parts (newObject creation and actual add to the collection). RadGridView raises AddingNewDataItem event and gives you an option to add default item (via e.NewObject property), if no item is supplied RadGridView tries to create a default object (via default parameter less constructor of the underlying business object). Second part of the job is adding new item to the source collection - when collection supports adding (IList or something like that) there is no problem item is added to the end of RadGridView items. When source collection doesn't implements IList then special UI for adding is displayed (same as ShowInsertRow = true). Indeed we can collapse this UI, but our assumption is that if the end user added one row probably he/she may want to add another new row. If you want to collapse this UI you can easily do that with a single line of code inside RowEditEnded event.

void radGridView_RowEditEnded(object sender, GridViewRowEditEndedEventArgs e)
        {
            this.radGridView.ShowInsertRow = false;
        }

Unfortunately I cannot reproduce the described exception (setting CurrentColumn). Could you please send me a sample application which I can debug on my side in order to see what is going on?
Thank you in advance.

Greetings,
Nedyalko Nikolov
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

Tags
GridView
Asked by
Simon
Top achievements
Rank 1
Answers by
Nedyalko Nikolov
Telerik team
Share this question
or