Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Why do I keep getting null data from service call

$
0
0

I have a service which calls controller, which has cacheservice to send response data as location list based on customerId. As shown in below code, I am using it for paging. But I get null value at first response and then when I focus out and focus back to dropdown, I get the response. It would be better to understand based on code.

IndexFormPage.razor

<FormItem><Template><label for="tkbxLocationName" class="k-label k-form-label">@($"{locationFieldName} {MOM.Alias.Common.DTO.Name}")</label><div class="d-flex"><TelerikComboBox TItem="@LocationDropdownDTO" TValue="@(int)"                             ScrollMode="@DropDownScrollMode.Virtual"                             OnRead="@GetLocationItems"                             ItemHeight="60"                             PageSize="20"                             Size="@size" Rounded="@size"                             Placeholder="Select Location Name" Id="tkbxLocationName"                             TextField="@(nameof(LocationDropdownDTO.Name))"                             ValueField="@(nameof(LocationDropdownDTO.Id))"                             @bind-Value="@Dto.LocationId"                             OnChange="@OnLocationChange"                             ValueMapper="(val) => HandlelocationValueMapper(val)"                             @ref="@refLocationDropDown"                             AllowCustom="false"                             Width="@TaskCategoryFieldUpWidth"                             Filterable="true" Class="condition-field-width"                             FilterOperator="@((Telerik.Blazor.StringFilterOperator)ReusableFilterOperator)"                             DebounceDelay="@MOM.UI.Client.Constants.Common.SearchBoxDebounceDelay"><NoDataTemplate><MOM.UI.Client.Components.NoContent></MOM.UI.Client.Components.NoContent></NoDataTemplate><ComboBoxSettings><ComboBoxPopupSettings Height="200px" /></ComboBoxSettings>                </TelerikComboBox>            <TelerikValidationTooltip For="@(() => @Dto.LocationId)" TargetSelector="#tkbxLocationName" /></div></Template></FormItem>@code{async Task GetLocationItems(ReadEventArgs args){    DataSourceRequest newRequest = new DataSourceRequest()    {        Filters = new List<IFilterDescriptor>()    };    if (RecordLoading)    {        args.Request.Filters.Clear();        newRequest.Filters.Add(new FilterDescriptor        {            Member = nameof(LocationDTO.Id),            Operator = Telerik.DataSource.FilterOperator.IsEqualTo,            MemberType = typeof(int),            Value = Dto.LocationId        });    }    else    {        newRequest = GenerateLocationCustomFilterRequest(args.Request);        if (Dto.CustomerId > 0)        {            newRequest.Filters.Add(new FilterDescriptor            {                Member = nameof(LocationDTO.CustomerId),                Operator = Telerik.DataSource.FilterOperator.IsEqualTo,                MemberType = typeof(int),                Value = Dto.CustomerId            });            newRequest.Skip = 0;            //newRequest.PageSize = 100;        }    }    if (RanderFromCustomer && CustomerId > 0)    {        newRequest.Filters.Add(new FilterDescriptor        {            Member = nameof(LocationDTO.CustomerId),            Operator = Telerik.DataSource.FilterOperator.IsEqualTo,            MemberType = typeof(int),            Value = CustomerId        });    }    if (RanderFromLocation && LocationId > 0)    {        newRequest.Filters.Add(new FilterDescriptor        {            Member = nameof(LocationDTO.Id),            Operator = Telerik.DataSource.FilterOperator.IsEqualTo,            MemberType = typeof(int),            Value = LocationId        });    }    var result = await _locationservice.GetAllForDropDownWithPaging(newRequest, Dto.BranchId);    //newRequest.PageSize = result.Data.TotalItemCount;    args.Data = result?.Data?.CurrentPageData;    args.Total = result.Data.TotalItemCount;}}

LocationService.cs

public async Task<Response<DataEnvelope<LocationDropdownDTO>>> GetAllForDropDownWithPaging(DataSourceRequest gridRequest, byte branchId){    try    {        HttpResponseMessage response = await _service.httpClient.PostAsync($"{API.Location}/{API.GetAllForDropDownWithPaging}/{branchId}", new StringContent(JsonConvert.SerializeObject(gridRequest), Encoding.UTF8, API.MediaType));        return await response.Content.ReadFromJsonAsync<Response<DataEnvelope<LocationDropdownDTO>>>();    }    catch (System.Exception ex)    {        throw ex;    }}

LocationController.cs

public async Task<ActionResult<DataEnvelope<LocationDropdownDTO>>> GetAllForDropDownWithPaging([FromBody] DataSourceRequest gridRequest, byte branchId){    Response<List<LocationDropdownDTO>> result;    DataEnvelope<LocationDropdownDTO> dataToReturn;    try    {        result = _cacheService.GetData<Response<List<LocationDropdownDTO>>>(CacheConstant.AllLocationCache);        if (result == null)        {            result = await _service.GetAllForDropDown();            DateTimeOffset expirationTime = DateTimeOffset.Now.AddMinutes(CacheConstant.CacheExpirationTime);            _ = _cacheService.SetData<Response<List<LocationDropdownDTO>>>(CacheConstant.AllLocationCache, result, expirationTime);        }        IQueryable<LocationDropdownDTO> queriableData = result.Data.             Where(x => x.BranchId == branchId).AsQueryable();        DataSourceResult processedData = await queriableData.ToDataSourceResultAsync(gridRequest);        dataToReturn = new DataEnvelope<LocationDropdownDTO>        {            CurrentPageData = processedData.Data.Cast<LocationDropdownDTO>().ToList(),            TotalItemCount = processedData.Total        };    }    catch (Exception ex)    {        throw ex;    }    return Ok(new Response<DataEnvelope<LocationDropdownDTO>> { Data = dataToReturn, Message = "SUCCESS" });}

Please help me on this.


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>