We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date

Validation not firing when pressing save in batch mode

@model IEnumerable<SyncfusionMvcApplication4.Models.Game>

@section scripts {
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
}

<h2>Games</h2>

@(Html.EJ().Grid<SyncfusionMvcApplication4.Models.Game>("Editing")
        .Datasource(ds => ds.Json((IEnumerable<object>)Model).BatchURL("/Games/Update").Adaptor(AdaptorType.RemoteSaveAdaptor))
            .EditSettings(edit =>
            {
                edit.AllowAdding().AllowDeleting().AllowEditing().EditMode(EditMode.Batch).FormPosition(FormPosition.BottomLeft);
            })
        .ToolbarSettings(toolbar =>
        {
            toolbar.ShowToolbar().ToolbarItems(items =>
            {
                items.AddTool(ToolBarItems.Add);
                items.AddTool(ToolBarItems.Edit);
                items.AddTool(ToolBarItems.Delete);
                items.AddTool(ToolBarItems.Update);
                items.AddTool(ToolBarItems.Cancel);
            });
        })
        .AllowPaging()
        .Columns(col =>
        {
            col.Field("Id").HeaderText("Id").IsPrimaryKey(true).TextAlign(TextAlign.Right).Width(90).IsIdentity(true).Visible(false).Add();
            col.Field("GameDescription").HeaderText("Game").TextAlign(TextAlign.Left).Width(90).ValidationRules(v => v.AddRule("required", true)).Add();
            col.Field("GameDate").HeaderText("Date").Format("{0:dd/MM/yyyy HH:mm}").EditType(EditingType.DateTimePicker).TextAlign(TextAlign.Left).Width(90).ValidationRules(v => v.AddRule("required", true)).Add();
            col.Field("GameTypeId").HeaderText("Game Type").ForeignKeyField("Id").ForeignKeyValue("GameTypeName").DataSource((IEnumerable<object>)ViewBag.gameTypes).Width(75).ValidationRules(v => v.AddRule("required", true)).Add();
        })
)

The above is code I am using for a grid which works just fine in batch mode.  However, if I add a new row and click save immediately validation does not fire and the empty model passes to my controller which obviously requires work in the background to handle the error. Ideally I'd like the validation methods to take care of this on the client side. Why wouldn't my validation rules be triggering here when save is pressed?

FYI, I have <add key="UnobtrusiveJavaScriptEnabled" value="false" /> in my web.config.

1 Reply

MS Madhu Sudhanan P Syncfusion Team February 12, 2015 01:21 PM UTC

Hi Paul,

Thanks for using Syncfusion products.

Query: “Why wouldn't my validation rules be triggering here when save is pressed?”

We have analyzed the reported query and suspect that the validation is not triggered due to default values in the added row (For number-0, string- “” will be added by default). By default, the added row will contain default values for batch editing. And it is advisable to use batch add but we can provide the default value to column with the “DefaultValue” property of the columns.

@(Html.EJ().Grid<object>("Grid")

. . . .

    .Columns(col =>

        {

  col.Field("OrderID").HeaderText("Order ID").DefaultValue(100).IsPrimaryKey(true) Add();

            col.Field("CustomerID").HeaderText("Customer ID").DefaultValue("ASK").Width(80).Add();          

        })

The above DefaultValue property can be used to provide the default values to the column while normal/dialog editing.

Please let us know if you have any queries or we misunderstood your requirement.

Regards,

Madhu Sudhanan. P



Loader.
Live Chat Icon For mobile
Up arrow icon