BindingValidation Error on Silverlight RAD Grid

7 posts, 0 answers
  1. Ravi
    Ravi avatar
    104 posts
    Member since:
    Oct 2012

    Posted 05 Dec 2011 Link to this post

    <telerikGridView:GridViewDataColumn Width="120" DataMemberBinding="{Binding ProposedRSUGrants}"  SortMemberPath="ProposedRSUGrants">
                                            <telerikGridView:GridViewDataColumn.Header>
                                                <TextBlock Text="Proposed RSU Grant # shares" Style="{StaticResource EditableHeader}"/>
                                            </telerikGridView:GridViewDataColumn.Header>
                                            <telerikGridView:GridViewDataColumn.CellTemplate>
                                                <DataTemplate>
                                                    <Border Background="LightYellow">
                                                        <TextBlock Margin="0,0,3,0" HorizontalAlignment="Right" Text="{Binding ProposedRSUGrants}"/>
                                                    </Border>
                                                </DataTemplate>
                                            </telerikGridView:GridViewDataColumn.CellTemplate>
                                            <telerikGridView:GridViewDataColumn.CellEditTemplate>
                                                <DataTemplate>
                                                    <TextBox Text="{Binding ProposedRSUGrants, Mode=TwoWay,NotifyOnValidationError=True, ValidatesOnExceptions=True}" GotFocus="Grid_TextBox_GotFocus" IsEnabled="{Binding StockEligible}"/>
                                                </DataTemplate>
                                            </telerikGridView:GridViewDataColumn.CellEditTemplate>
                                        </telerikGridView:GridViewDataColumn>

    in the setter i have the below code
    public int ProposedRSUGrants
            {
                get
                {
                    return _ProposedRSUGrants;
                }
                set
                {
                    if (value != _ProposedRSUGrants)
                    {
                        _ProposedRSUGrants = value;
                        isPropertyUpdatedBy_ProposedRSUGrants = true;
      
                        onPropertyChanged(this, "ProposedRSUGrants");
                        if (!isPropertyUpdatedBy_ProposedRSUGrantValueCurrency)
                        {
                            ProposedRSUGrantValueCurrency = _ProposedRSUGrants * Guidelines.DefaultPrice;
                            onPropertyChanged(this, "ProposedRSUGrantValueCurrency");
                        }
      
                        isPropertyUpdatedBy_ProposedRSUGrantValueCurrency = false;
                        CalcWalkawayvalueofproposedRSUs_at8();
                        CalcWalkawayvalueofproposedRSUs_at12();
                        CalcWalkawayvalueofproposedRSUs_at16();
      
                        SetDirty();
                        SetRecalculateDirty();
      
                        //Proposed RSU Grant Value should be with in the Range of RSU GuideLines Value
                        //string strMsgTemplate = "The Proposed RSU Grant cannot be {0} than {1} (Press \"Escape\" to retain the old value)";
                        string strMsgTemplate = "Warning: The Proposed RSU Grant is {0} than {1}";
      
                        if ((value > RSUGuideLineMax) && (value != Guidelines.EQUITY_RANGE_GUIDENCE_DEFAULT_VALUE))
                        {
                            string strMsg = string.Format(strMsgTemplate, "greater", RSUGuideLineMax);
                            throw new InvalidDataException(strMsg);
                        }
                        else if ((value < RSUGuideLineMin) && (value != Guidelines.EQUITY_RANGE_GUIDENCE_DEFAULT_VALUE))
                        {
                            string strMsg = string.Format(strMsgTemplate, "less", RSUGuideLineMin);
                            throw new InvalidDataException(strMsg);
                        }
                        //end of new changes                    
                    }                
                }
            }


    Hi I have implemented RAD Grid under multiple TABs as attached. In few of the grid i have inline editing enabled based on some business functionality. Now if the user enters some invalid value in the editable column it throws the error from the setter as well as displays the red rectangle with the errro message.

    My issue here is, after the error message is poped-up the user can go ahead and click on any of the TABs or the left vertical menu (Tom Fallon). sometimes when the user double clicks on the TAB or Left menu the system is throwing an exception.

    What i need is, if there is an exception already shown, the user should not be able to do any further actions unless REFRESH or F5. How can i acheive this.

    Thanks,
    Shiras
  2. Ravi
    Ravi avatar
    104 posts
    Member since:
    Oct 2012

    Posted 06 Dec 2011 Link to this post

    Appreciate a quick response.
  3. DevCraft banner
  4. Ravi
    Ravi avatar
    104 posts
    Member since:
    Oct 2012

    Posted 07 Dec 2011 Link to this post

    Hi,

    Can you please let me know the status on this issue.

    This issue in our project is a show-stopper and we appreciate a quick response.

    Thanks,
    Shiras
  5. Nedyalko Nikolov
    Admin
    Nedyalko Nikolov avatar
    871 posts

    Posted 07 Dec 2011 Link to this post

    Hello David,

    Generally this should be the default behavior unless you didn't modify RadGridView.ActionOnLostFocus property.
    RadGridView should place focus in the "invalid" cell when binding validation error occur.
    Could you please send me a sample project 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 >>

  6. Ravi
    Ravi avatar
    104 posts
    Member since:
    Oct 2012

    Posted 07 Dec 2011 Link to this post

    I have not done any modification to RadGridView.ActionOnLostFocus.

    I guess the code i have provided in full, I mean the setter and the XAML. now the only thing is to have RadGrid in place. I guess you should be able to do it and let me know.

    Let me know if you still need a sample project for this small issue.

    Thanks,
    Shiras
  7. Ravi
    Ravi avatar
    104 posts
    Member since:
    Oct 2012

    Posted 09 Dec 2011 Link to this post

    Hi Guys,

    I am not sure how many times I should send a reminder on my issue ticket.

    Appreciate a response without any more reminders.

    you may please provide a sample application with what you feel is the right way of coding for my issue.If not please suggest me someway.

    Thanks,
    Shiras
  8. Nedyalko Nikolov
    Admin
    Nedyalko Nikolov avatar
    871 posts

    Posted 12 Dec 2011 Link to this post

    Hello David,

    Unfortunately RadGridView cannot control the entire page. What I meant with my previous post is that RadGridView returns focus to the "invalid" cell, but it is beyond RadGridView to stop (prevent) any other action outside of the grid.
    However you could use RadGridView.CellValidated event to determinate if there is a validation error and perform an appropriate action.

    private void radGridView_CellValidated(object sender, Telerik.Windows.Controls.GridViewCellValidatedEventArgs e)
            {
                if (e.ValidationResult != null && e.ValidationResult.ErrorMessage != null)
                {
                    this.radTabControl.SelectedIndex = 0;
                }
            }

    Let me know if this does not help.

    Greetings,
    Nedyalko Nikolov
    the Telerik team

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

Back to Top
DevCraft banner