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

How to set errortext when adding a record

4 Answers 239 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Ruth Goldberg
Top achievements
Rank 1
Ruth Goldberg asked on 23 Feb 2010, 03:26 PM
In my cellValidating event, I validate the field and set the errortext if invalid. However, if I am adding a new record, the row is not GridViewDataRowInfo, which has an errortext property, but GridViewNewRowInfo, which doesn't. Is there any way to set the errortext for the row?

4 Answers, 1 is accepted

Sort by
0
Accepted
Svett
Telerik team
answered on 24 Feb 2010, 09:07 AM
Hi Ruth Goldberg,

You can extend and replace GridRowHeaderCellElement to support error text for GridViewNewRowInfo row. You should subscribe to CreateCell event, where you have to replace the cell with its custom implementation. You can use the following code snippet as a sample:

public class CustomGridRowHeaderCellElement : GridRowHeaderCellElement
{
    public CustomGridRowHeaderCellElement(GridViewColumn column, GridRowElement row)
        : base(column, row)
    {
    }
 
    public override void UpdateInfo()
    {
        base.UpdateInfo();
 
        if (this.RowInfo is GridViewNewRowInfo)
        {
            if (this.RowInfo.Tag == null)
            {
                this.ErrorImage.Image = null;
                this.ToolTipText = String.Empty;
            }
            else
            {
                this.ToolTipText = Convert.ToString(this.RowInfo.Tag);
                this.ErrorImage.Image = this.TableElement.ErrorRowHeaderImage;
            }
        }
    }
 
    private ImagePrimitive ErrorImage
    {
        get
        {
            if (this.Children.Count == 0)
            {
                return null;
            }
 
            return this.Children[0] as ImagePrimitive;
        }
    }
}

this.radGridView.CreateCell += new GridViewCreateCellEventHandler(radGridView_CreateCell);
 
private void radGridView_CreateCell(object sender, GridViewCreateCellEventArgs e)
{
    if (e.CellType == typeof(GridRowHeaderCellElement))
    {
        e.CellType = typeof(CustomGridRowHeaderCellElement);
    }
}

Finally, you need to only set the desired error text in the Tag property of GridViewNewRowInfo instance as it's shown in the following sample code:

private void radGridView_CellValidating(object sender, CellValidatingEventArgs e)
{
    GridViewDataRowInfo dataRow = e.Row as GridViewDataRowInfo;
 
    if (dataRow != null)
    {
        dataRow.ErrorText = "This is error text";
    }
    else if (e.Row is GridViewNewRowInfo)
    {
        e.Row.Tag = "This is error text";
    }
}

Let us know if you need further assistance.

Regards,

Svett
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
0
Ruth Goldberg
Top achievements
Rank 1
answered on 25 Feb 2010, 04:21 PM
Thanks. I had to convert it to vb.net, but it worked.
0
Vijay
Top achievements
Rank 1
answered on 04 Oct 2013, 04:40 AM
Hi, 

I'm having an unexpected issue and I'm sure I'm just missing something: 

I have a bunch of grids, and I'm adding handling for UserAddingRow to these grids. If the key fields are already present in the rows of the RadGridView, then I alert the user. I have used e.cancel = true and e.rows(0).errortext set to the alert message. 

The handling looks like this:

Private Sub rgCrew_UserAddingRow(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.GridViewRowCancelEventArgs) Handles rgCrew.UserAddingRow
    Dim existsFlag As Boolean = false
     'commented out logic that sets existsFlag
     existsFlag = true
     
    If existsFlag Then 
        Dim alertMessage As String = "Crew Template entry for Employee ID already exists. Please cancel the entry or update the key values."
        MessageBox.Show(alertMessage, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2)
        e.Cancel = True
        e.Rows(0).ErrorText = alertMessage
    End If
End Sub

In every grid but this one the red exclamation mark and error text hover is activated when the error scenario is triggered. 
I've debugged both working and this versions so that the code for setting errorText does get touched.

Is there anything I might be missing that would not activate the errorText or suppress it?
0
George
Telerik team
answered on 08 Oct 2013, 02:29 PM
Hello Vijay,

Thank you for contacting us.

It appears that the code you provided me with works well on my end too. Maybe if you provide me with a project where the two working grids and the one non-working are I would be of bigger help.

I would recommend you open a new support ticket where attachments are allowed and you will be able to attach your project.

Let me know If there is anything else I can help with.

Regards,
George
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
Ruth Goldberg
Top achievements
Rank 1
Answers by
Svett
Telerik team
Ruth Goldberg
Top achievements
Rank 1
Vijay
Top achievements
Rank 1
George
Telerik team
Share this question
or