|
public PageResult<Book> Get(ODataQueryOptions opts)
{
var results = _db.Books.AsQueryable();
var count = results.Count();
if (opts.OrderBy != null)
results = opts.OrderBy.ApplyTo(results);
if (opts.Filter != null)
{
results = opts.Filter.ApplyTo(results, new ODataQuerySettings()).Cast<Book>();
}
var queryString = opts.Request.Query;
string search = queryString["$search"];
if (search != null)
{
//sarch query is maintained. to overcome that we have used below workaround
string key = search.Split(" OR ")[search.Split(" OR ").Length - 1];
//searched the typed string using where query and retured the results.
results = results.Where(fil => fil.Id.ToString().ToLower().Contains(key) || fil.Name.ToLower().Contains(key) || fil.Gender.ToString().ToLower().Contains(key) || fil.Active.ToString().ToLower().Contains(key) || fil.CreditLimit.ToString().ToLower().Contains(key) || fil.RegistrationDate.ToString().ToLower().Contains(key));
}
if (opts.Count != null)
count = results.Count();
if (opts.Skip != null)
results = opts.Skip.ApplyTo(results, new ODataQuerySettings());
if (opts.Top != null)
results = opts.Top.ApplyTo(results, new ODataQuerySettings());
return new PageResult<Book>(results, null, count);
}
|
Is there an update on this? I am still experiencing the "parameter $search is not...." error but I cannot access the l
|
<SfGrid TValue="Order" @ref="GridInstance" AllowPaging="true" Toolbar="@(new List<string>() { "Search" })">
<SfDataManager @ref="dm" Url=http://localhost:64956/odata/books Adaptor="Adaptors.ODataV4Adaptor"></SfDataManager>
<GridEvents OnActionFailure="ActionFailureHandler" TValue="Order"></GridEvents>
<GridColumns>
<GridColumn Field=@nameof(Order.guid) HeaderText="GUID" TextAlign="TextAlign.Right" Width="120"></GridColumn>
. . .
</GridColumns>
</SfGrid>
@code{
SfGrid<Order> GridInstance;
public SfDataManager dm { get; set; }
protected override void OnAfterRender(bool firstRender)
{
base.OnAfterRender(firstRender);
RemoteOptions Rm = (dm.DataAdaptor as ODataV4Adaptor).Options;
Rm.EnableODataSearchFallback = true;
(dm.DataAdaptor as ODataV4Adaptor).Options = Rm;
}
. . .
} |
Hello,
This was working as far back as v19.3.0.59
But with more recent releases - such as version 19.4.0.43, my ODataV4Adaptor no longer works.
For my grid I have something like this:
<SfDataManager @ref="dm" Url="..."
Offline="false"
Headers=@HeaderData
CrossDomain="true"
Adaptor="Adaptors.ODataV4Adaptor"></SfDataManager>
And in code:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
base.OnAfterRender(firstRender);
if (firstRender)
{
HeaderData["Authorization"] = $"Bearer {accessToken}";
RemoteOptions Rm = (dm.DataAdaptor as ODataV4Adaptor).Options;
Rm.EnableODataSearchFallback = true;
(dm.DataAdaptor as ODataV4Adaptor).Options = Rm;
}
}
I see my service that 'Url' points to returns data but the UI shows an empty grid. Would you be able to test a similar set up?
Does it have anything to do with the search fallback?
Thank you