<ejs-grid id="gridNotification" allowPaging="true" allowFiltering="false" allowSorting="false" allowGrouping="true" query="new ej.data.Query().addParams('p1', 'v1')"> <e-datamanager url="/api/notification/datasource" insertUrl="/api/notification/insert" updateUrl="/api/notification/update" removeUrl="/api/notification/delete" crossDomain="true" adaptor="UrlAdaptor">e-datamanager> <e-grid-editSettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Dialog" showConfirmDialog="true" showDeleteConfirmDialog="true">e-grid-editSettings> <e-grid-pageSettings pageCount="5" pageSize="10">e-grid-pageSettings> <e-grid-filterSettings type="Menu">e-grid-filterSettings> <e-grid-groupsettings showDropArea="false" captionTemplate="#ntfGroupCaptionTemplate" columns="@(new[] {"NotificationTypeID"})">e-grid-groupsettings> <e-grid-columns> <e-grid-column field="NotificationSubscriptionID" headerText="Subscription ID" isPrimaryKey="true" visible="false">e-grid-column> <e-grid-column field="NotificationTypeID" headerText="Notification type ID" visible="false">e-grid-column> <e-grid-column field="Name" headerText="Description" template="#ntfDescriptionTemplate" width="200">e-grid-column> <e-grid-column field="Menu" headerText="" template="#ntfManageMenuTemplate" width="30">e-grid-column> <e-grid-column field="System" headerText="System" template="#ntfSystemTemplate" type="string" width="45">e-grid-column> <e-grid-column field="Conditions" headerText="Conditions" template="#ntfFilterTemplate" width="50">e-grid-column> <e-grid-column field="Template" headerText="Template" template="#ntfMessageTemplate" width="50">e-grid-column> <e-grid-column field="Subscribers" template="#ntfSubscribersTemplate" width="150">e-grid-column> e-grid-columns> ejs-grid>
[HttpPost] [Route("datasource")] public ActionResult DataSource([FromBody] RemoteDataSource dm) { if (!ModelState.IsValid) // IsValid == False, see errors below { return BadRequest(ModelState); }
|
<ejs-grid id="Grid" query="new ej.data.Query().addParams('p1', 'v1')">
...
</ejs-grid>
public class RemoteDataSource
{
...
[JsonProperty(PropertyName = "p1", Required = Required.Default)]
public string Query { get; set; }
} |
{
[JsonProperty(PropertyName = "displayMode", Required = Required.Always)]
public NotificationSubscriptionDisplayMode DisplayMode { get; set; }
[JsonProperty(PropertyName = "userId", Required = Required.Default)]
public int? UserID { get; set; }
}
My WEB API class use this class for deserializing request data
[Route("datasource")]
public ActionResult DataSource([FromBody] NotificationRemoteDataSource dm)
And this is how grid query parameters are specified.
<ejs-grid id="@Model.GridName" allowPaging="true" allowFiltering="false" allowSorting="false" allowGrouping="true"
query="new ej.data.Query().addParams('displayMode', '@Model.DisplayMode').addParams('userId', '@Model.UserId')"
|
public class DataManager //extend DataManager Class public int skip { get; set; } public class NotificationRemoteDataSource : RemoteDataSource, DataManager {
// here we used 'skip' and 'take' queries
return new { Items = data.Skip(dm.skip).Take(dm.take), Count = data.Count() };
} |