Hi, I'm setting up a Grid with a search bar in the toolbar, using the UrlAdaptor. I am using all the operations that the grid has (search, filtering, ordering, paging).
The problem I have is that when I want to perform searches, in the ActionResult, the DataManagerRequest parameter has in Search = null and in Where it is what Search should have and an Exception occurs.
Here is my code
view:
@using Syncfusion.EJ2
@{
ViewBag.Title = "Index";
}
@{
List<object> toolbarItems = new List<object>();
toolbarItems.Add(new { text = "Agregar", tooltipText = "Agregar nuevo registro", prefixIcon = "e-add", id = "btnAgregar" });
toolbarItems.Add("Edit");
toolbarItems.Add("Delete");
toolbarItems.Add("Update");
toolbarItems.Add("Cancel");
toolbarItems.Add("Search");
}
@(Html.EJS().Grid("CatPartesEquipo")
.DataSource(dataManager => dataManager.Url(Url.Action("DataPartes", "CatPartesEquipo", new { area = "Catalogos" }, Request.Url.Scheme))
.RemoveUrl(Url.Action("BajaConsumible", "CatPartesEquipo", new { area = "Catalogos" }, Request.Url.Scheme))
.Adaptor("UrlAdaptor").CrossDomain(true))
.ShowColumnMenu(true)
.AllowFiltering(true)
.AllowGrouping(true)
.AllowMultiSorting(true)
.AllowPaging(true)
.AllowSorting(true)
.Columns(c =>
{
c.Field("SuministroCode").IsPrimaryKey(true).IsIdentity(true).HeaderText("Id").Width("50px").Add();
c.Field("TipoSuministroCode").Width("130px").HeaderText("Tipo").ForeignKeyField("TipoSuministroCode").ForeignKeyValue("Descripcion")
.DataSource((IEnumerable<object>)ViewBag.tipo).Add();
c.Field("NombreEquipoCode").HeaderText("Equipo").Width("130px").ForeignKeyField("NombreEquipoCode").ForeignKeyValue("Descripcion")
.DataSource((IEnumerable<Object>)ViewBag.nombreEquipo).Add();
c.Field("MarcaCode").Width("130px").HeaderText("Marca").ForeignKeyField("MarcaCode").ForeignKeyValue("Descripcion")
.DataSource((IEnumerable<object>)ViewBag.marca).Add();
c.Field("ModeloCode").Width("130px").HeaderText("Modelo").ForeignKeyField("ModeloCode").ForeignKeyValue("Descripcion")
DataSource((IEnumerable<object>)ViewBag.modelo).Add();
c.Field("Descripcion").Width("150px").HeaderText("Descripcion").Add();
c.Field("MarcaSuministroCode").Width("150px").HeaderText("Marca Suministro").Add();
c.Field("FamiliaSuministroCode").Width("130px").HeaderText("Familia").ForeignKeyField("FamiliaSuministroCode").ForeignKeyValue("FamiliaSuministro").DataSource((IEnumerable<object>)ViewBag.familia).Add();
c.Field("Clave").Width("100px").Add();
c.Field("NoParte").Width("100px").HeaderText("No. Parte").Add();
c.Field("Original").DisplayAsCheckBox(true).EditType("booleanedit").Type("boolean").Width("100px").Add();
c.Field("UnidadCode").Width("100px").HeaderText("Unidad").ForeignKeyField("UnidadCode").ForeignKeyValue("Unidad")
.DataSource((IEnumerable<object>)ViewBag.unidad).Add();
c.Field("PresentacionSuministroCode").Width("130px").HeaderText("Presentacion").ForeignKeyField("PresentacionSuministroCode")
.ForeignKeyValue("Presentacion").DataSource((IEnumerable<object>)ViewBag.presentacion).Add();
c.Field("EstatusSuministroCode").Width("100px").HeaderText("Estatus").ForeignKeyField("EstatusSuminitroCode").ForeignKeyValue("EstatusConsumible")
.DataSource((IEnumerable<object>)ViewBag.estatusConsumible).Add();
})
.FilterSettings(f => f.Type(Syncfusion.EJ2.Grids.FilterType.Excel))
.GroupSettings(g => g.ShowGroupedColumn(true))
.PageSettings(p => p.PageSize(15))
.SortSettings(s => s.AllowUnsort(true))
.Locale("es-ES").Toolbar(toolbarItems).ToolbarClick("toolbarClick")
.EditSettings(edit => { edit.AllowDeleting(true).AllowEditing(true); })
.SearchSettings(s => { s.IgnoreCase(true); })
.ActionBegin("begin")
.Render()
)
server:
public ActionResult DataPartes(Syncfusion.EJ2.Base.DataManagerRequest dm)
{
IEnumerable<mehow.domain.catalogs.CatSuministros> x = _catService.GetConsumibles();
Syncfusion.EJ2.Base.DataOperations operations = new Syncfusion.EJ2.Base.DataOperations();
if(dm.Search != null && dm.Search.Count > 0)
{
x = operations.PerformSearching(x, dm.Search); //Search
}
if(dm.Sorted != null && dm.Sorted.Count > 0) //Sorting
{
x = operations.PerformSorting(x, dm.Sorted);
}
if(dm.Where != null && dm.Where.Count > 0) //Filtering
{
x = operations.PerformFiltering(x, dm.Where, dm.Where[0].Operator);
}
var y = x.Cast<mehow.domain.catalogs.CatSuministros>().Count();
if(dm.Skip != 0)
{
x = operations.PerformSkip(x, dm.Skip); //Paging
}
if(dm.Take != 0)
{
x = operations.PerformTake(x, dm.Take);
}
return Json(new { result = x, count = y }, JsonRequestBehavior.AllowGet);
}
I hope you can help me. Thanks in advance