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

Inline multiedit RegularExpressionValidator validates all rows in editmode?

1 Answer 88 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Jacob
Top achievements
Rank 1
Jacob asked on 03 Apr 2013, 08:44 PM
Hi,

Im using a RadGrid for editing participants in an event.

I Would like to validate the email adress before comitting the data.

The problem is now that if i have more than one row in EditState and trys to commit one of the rows is validates all rows in editState?

Why is that? and how to avoid it?

Here is the code to my grid:
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
                <script type="text/javascript">
                    function RowDblClick(sender, eventArgs) {
                        sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical());
                    }
                </script>
            </telerik:RadCodeBlock>
            <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy" runat="server">
                <AjaxSettings>
                    <telerik:AjaxSetting AjaxControlID="rgParticipants">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="rgParticipants" LoadingPanelID="RadAjaxLoadingPanel1">
                            </telerik:AjaxUpdatedControl>
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                </AjaxSettings>
            </telerik:RadAjaxManagerProxy>
            <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
            </telerik:RadAjaxLoadingPanel>
            <telerik:RadGrid ID="rgParticipants" runat="server" AutoGenerateColumns="False" AllowSorting="True"
                Skin="Simple" Width="100%" AllowPaging="True" ShowStatusBar="true" PageSize="999999"
                GridLines="None" OnUpdateCommand="RadGridItemUpdated" OnNeedDataSource="RadGridNeedDataSource"
                OnInsertCommand="RadGridItemInserted" OnDeleteCommand="RadGridItemDeleted" AllowMultiRowEdit="True"
                OnItemDataBound="RadGridItemDataBound" AllowAutomaticInserts="True">
                <MasterTableView TableLayout="Fixed" DataKeyNames="Id" CommandItemDisplay="Top" ClientDataKeyNames="Id"
                    EditMode="InPlace" AllowMultiColumnSorting="True" Width="100%" InsertItemPageIndexAction="ShowItemOnCurrentPage"
                    InsertItemDisplay="Top">
                    <NoRecordsTemplate>
                        <div>
                            Ingen deltagerer.
                        </div>
                    </NoRecordsTemplate>
                    <Columns>
                        <telerik:GridBoundColumn UniqueName="Id" DataField="Id" HeaderText="Id" ReadOnly="True"
                            Visible="False" HeaderStyle-Width="5%">
                        </telerik:GridBoundColumn>
                        <telerik:GridTemplateColumn UniqueName="tcName" HeaderText="Navn" HeaderStyle-Width="20%"
                            SortExpression="Name">
                            <ItemTemplate>
                                <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="txtName" runat="server" Text='<%# Eval("Name") %>' Width="90%" />
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridTemplateColumn UniqueName="tcClub" HeaderText="Klub" HeaderStyle-Width="20%"
                            SortExpression="Club">
                            <ItemTemplate>
                                <asp:Label ID="lblClub" runat="server" Text='<%# Eval("Club") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="txtClub" runat="server" Text='<%# Eval("Club") %>' Width="90%" />
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridTemplateColumn UniqueName="tcEmail" HeaderText="Email" HeaderStyle-Width="20%"
                            SortExpression="Email">
                            <ItemTemplate>
                                <asp:Label ID="lblEmail" runat="server" Text='<%# Eval("Email") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="txtEmail" runat="server" Text='<%# Eval("Email") %>' Width="90%" />
                                <asp:RegularExpressionValidator ID="vldEmail" runat="server"  Display="Dynamic"
                                    ErrorMessage="Ikke en email adresse" ValidationExpression="^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}$"
                                    ControlToValidate="txtEmail">
                                </asp:RegularExpressionValidator>
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridTemplateColumn UniqueName="tcCategory" HeaderText="Kategori" HeaderStyle-Width="10%"
                            SortExpression="Category">
                            <ItemTemplate>
                                <asp:Label ID="lblCategory" runat="server" Text='<%# Eval("Category") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:DropDownList ID="dlCategory" runat="server" DataTextField="Description" DataValueField="Id" />
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridTemplateColumn UniqueName="tcChip" HeaderText="Chip" HeaderStyle-Width="10%"
                            SortExpression="Chip">
                            <ItemTemplate>
                                <asp:Label ID="lblChip" runat="server" Text=""></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="txtChip" runat="server" Text="" Width="90%" />
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridTemplateColumn UniqueName="tcStartNumber" HeaderText="Start nummer"
                            HeaderStyle-Width="10%" SortExpression="StartNumber">
                            <ItemTemplate>
                                <asp:Label ID="lblStartNumber" runat="server" Text='<%# Eval("StartNumber") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="txtStartNumber" runat="server" Text='<%# Eval("StartNumber") %>'
                                    Width="90%" />
                                <asp:RegularExpressionValidator ID="vldStartNumber" ControlToValidate="txtStartNumber"
                                    Display="Dynamic" ErrorMessage="Ikke et nummer" ValidationExpression="(^([0-9]*\d*\d{1}?\d*)$)"
                                    runat="server" />
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridTemplateColumn UniqueName="tcConfirmed" HeaderText="Status" HeaderStyle-Width="10%"
                            SortExpression="ParticipantStatusDescription">
                            <ItemTemplate>
                                <asp:Label ID="lblConfirmed" runat="server" Text='<%# Eval("ParticipantStatusDescription") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:DropDownList ID="dlConfirmed" runat="server" DataTextField="Description" DataValueField="Kode" />
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"
                            EditImageUrl="~/images/Icon/edit.png" CancelImageUrl="~/images/Icon/cross.gif"
                            InsertImageUrl="~/images/Icon/add.gif" UpdateImageUrl="~/images/Icon/accept.gif"
                            EditText="Rediger" InsertText="Opret" UpdateText="Gem">
                            <HeaderStyle Width="5%"></HeaderStyle>
                        </telerik:GridEditCommandColumn>
                        <telerik:GridButtonColumn UniqueName="DeleteColumn" CommandName="Delete" ButtonType="ImageButton"
                            ImageUrl="~/images/Icon/remove.gif">
                            <HeaderStyle Width="3%"></HeaderStyle>
                        </telerik:GridButtonColumn>
                    </Columns>
                </MasterTableView>
                <ClientSettings>
                    <ClientEvents OnRowDblClick="RowDblClick"></ClientEvents>
                </ClientSettings>
            </telerik:RadGrid>

1 Answer, 1 is accepted

Sort by
0
Eyup
Telerik team
answered on 08 Apr 2013, 12:40 PM
Hi Jacob,

You will need to use ValidationGroups:
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
        GridEditableItem editableItem = e.Item as GridEditableItem;
        RequiredFieldValidator validator = editableItem["TemplateColumnName"].FindControl("RequiredFieldValidator1") as RequiredFieldValidator;
        LinkButton updateButton = editableItem.FindControl("AutoGeneratedUpdateButton") as LinkButton;
 
        validator.ValidationGroup = e.Item.ClientID;
        updateButton.ValidationGroup = e.Item.ClientID;
    }
}

Hope this helps. Please give it a try and let me know if it works for you.

All the best,
Eyup
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Tags
Grid
Asked by
Jacob
Top achievements
Rank 1
Answers by
Eyup
Telerik team
Share this question
or