Approved
Last Updated: 30 Mar 2016 09:38 by ADMIN
ADMIN
Dess | Tech Support Engineer, Sr.
Created on: 23 Jun 2014 13:14
Category: PageView
Type: Bug Report
0
FIX. RadPageView - Validation events are not fired when editing the tabs
To reproduce: 
1.Add a RadPageView with several pages. 
2.Set the ViewElement.AllowEdit property to true.
3.Use the following code:

public Form1()
{
    InitializeComponent();

    radPageView1.ViewElement.AllowEdit = true;
    radPageView1.ViewElement.EditorInitialized += ViewElement_EditorInitialized;
}

private void ViewElement_EditorInitialized(object sender, RadPageViewEditorEventArgs e)
{
    radPageView1.ViewElement.ActiveEditor.Validating -= ActiveEditor_Validating;
    radPageView1.ViewElement.ActiveEditor.Validating += ActiveEditor_Validating;

    radPageView1.ViewElement.ActiveEditor.Validated -= ActiveEditor_Validated;   
    radPageView1.ViewElement.ActiveEditor.Validated += ActiveEditor_Validated;    

    radPageView1.ViewElement.ActiveEditor.ValidationError -= ActiveEditor_ValidationError;
    radPageView1.ViewElement.ActiveEditor.ValidationError += ActiveEditor_ValidationError;
}


private void ActiveEditor_Validating(object sender, CancelEventArgs e)
{
    RadPageViewElement.PageViewItemTextEditor editor =
        sender as RadPageViewElement.PageViewItemTextEditor;
    
    if (editor != null && radPageView1.ViewElement.ActiveEditor.Value == string.Empty)
    {
        e.Cancel = true;
    }
}

private void ActiveEditor_ValidationError(object sender, ValidationErrorEventArgs e)
{
    RadMessageBox.Show("Page label can't be empty!", "Error", MessageBoxButtons.OK, RadMessageIcon.Error);
}

private void ActiveEditor_Validated(object sender, EventArgs e)
{
    RadMessageBox.Show("Page label has been successfully updated!", "Information", MessageBoxButtons.OK, RadMessageIcon.Info);
}


If you change a tab title and do not press Enter, but click outside the pageview, the respective events for validation are not fired.

Workaround:
private void ViewElement_EditorInitialized(object sender, RadPageViewEditorEventArgs e)
{
    RadPageViewElement.PageViewItemTextEditor textEditor = e.ActiveEditor as RadPageViewElement.PageViewItemTextEditor;
    RadPageViewElement.PageViewItemTextEditorElement element = textEditor.EditorElement as RadPageViewElement.PageViewItemTextEditorElement;
   element.PropertyChanged += element_PropertyChanged;
}

private void element_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    RadPageViewElement.PageViewItemTextEditorElement element = sender as RadPageViewElement.PageViewItemTextEditorElement;
    if (e.PropertyName == "ContainsFocus"&& !element.ContainsFocus)
    {
        radPageView1.ViewElement.ActiveEditor.Validate();
    }
}
0 comments