QueryGrid = new Query().Expand(new List<string> { "CodeType" }); this.grid.Refresh();
However I am unable to do this with the TreeGrid component.All I want is to rebind the grid to the OData remote datasource or just refresh the entire TreeGrid.
The available methods below, do not serve that purpose await this.grid.RefreshColumns(); await this.grid.RefreshHeader();
Also, custom search functionality is NOT WORKING.
This does not workprivate async Task OnSearch() { if (!string.IsNullOrEmpty(searchText)) { WhereFilter filter1 = new WhereFilter { Field = "Code", Operator = "contains", value = searchText }; WhereFilter filter2 = new WhereFilter { Field = "Name", Operator = "contains", value = searchText }; WhereFilter filter3 = new WhereFilter { Field = "Description", Operator = "contains", value = searchText }; WhereFilter filter4 = new WhereFilter { Field = "Header_Name", Operator = "contains", value = searchText }; QueryGrid = new Query() .Where(filter1.Or(filter2).Or(filter3).Or(filter4)); //this.grid.Refresh(); await this.grid.RefreshColumns(); //not working await this.grid.RefreshHeader(); //not working } else { QueryGrid = new Query();//.Expand(new List<string> { "Parent" }); //this.grid.Refresh(); not available await this.grid.RefreshColumns(); await this.grid.RefreshHeader(); } }
So how do I accomplish these 2 tasks TODAY?1) Programmatically refresh or rebind the TreeGrid2) Execute custom search queries on the DataSource/Adaptor
Please respond asap, thanks!
PS: My TreeGrid razor code is below<SfTreeGrid @ref="grid" ID="gridLocationType" TValue="LocationTypeMasterView" IdMapping="Id" ParentIdMapping="ParentId" HasChildMapping="HasChildren" TreeColumnIndex="1" AllowPaging="true" AllowSorting="true" AllowFiltering="true" AllowSelection="false" EnableAltRow="false" AllowResizing="true" ShowColumnChooser="true" ShowColumnMenu="true" AllowMultiSorting="true" AllowReordering="true" Width="100%" Height="400"><SfDataManager Url="@GRID_API_RESOURCE" CrossDomain="true" Adaptor="Adaptors.ODataV4Adaptor"></SfDataManager> <TreeGridPageSettings EnableQueryString="true" PageCount="10" PageSizes="true" PageSizeMode="PageSizeMode.Root"> </TreeGridPageSettings> <TreeGridFilterSettings ShowFilterBarStatus="true" HierarchyMode="@FilterHierarchyMode.Parent" Type="Syncfusion.Blazor.TreeGrid.FilterType.Menu"></TreeGridFilterSettings> <TreeGridEvents TValue="LocationTypeMasterView" OnActionFailure="@ActionFailure"></TreeGridEvents>
<SfToolbar CssClass="d-flex justify-content-between w-100-full py-2"> <ToolbarItems> <ToolbarItem Type="ItemType.Button" CssClass=""> <Template> <div class="d-flex justify-content-between"> <a class="btn btn-sm btn-rounded btn-outline-light btn-gridmenu-inline text-blue font-weight-bold mr-2" @onclick="OnRefresh"> <i class="fe fe-refresh-ccw font-weight-bold" aria-hidden="true"></i> Refresh </a> <a class="btn btn-sm btn-rounded btn-outline btn-gridmenu-inline text-blue font-weight-bold mr-2" @onclick="OnAddRow"> <i class="fe fe-plus-circle font-weight-bold" aria-hidden="true"></i> New </a> </div> </Template> </ToolbarItem><ToolbarItem Type="ItemType.Input" CssClass=""> <Template> <div class="d-flex justify-content-between"> <div class="input-group input-group-sm"> <input type="text" size="30" class="form-control" @bind-value="@searchText" @bind-value:event="oninput" @onkeyup="OnSearchEnter" placeholder="Enter keywords"> <div class="input-group-append"> <button @onclick="OnClearSearch" class="btn btn-sm btn-rounded" type="button"> <i class="fe fe-x font-weight-bold2"></i> </button> </div> <div class="input-group-append"> <button @onclick="OnSearch" class="btn btn-sm btn-rounded btn-outline font-weight-bold" type="button"> <i class="fe fe-search font-weight-bold"></i> Search </button> </div> </div> </div> </Template> </ToolbarItem> </ToolbarItems> </SfToolbar>
<TreeGridColumns> <TreeGridColumn HeaderText="#" TextAlign="TextAlign.Justify" Width="90"> <Template> @{ var row = (context as LocationTypeMasterView); <div class="d-flex flex-row justify-content-center2"> <a class="btn btn-sm btn-rounded btn-outline btn-grid-inline text-gray-2 font-weight-bold2 mr-2" @onclick="@(e=>OnEditRow(row))"> <i class="fe fe-edit-3 font-weight-bold" aria-hidden="true"></i> </a> <a class="btn btn-sm btn-rounded btn-outline btn-grid-inline text-gray-4 font-weight-bold2 mr-0" @onclick="@(e=>OnDeleteRow(row))"> <i class="fe fe-trash-2 font-weight-bold" aria-hidden="true"></i> </a> </div> } </Template></TreeGridColumn> <TreeGridColumn Field=@nameof(LocationTypeMasterView.Name) HeaderText="Name"></TreeGridColumn></TreeGridColumns></SfTreeGrid>
private async Task OnSearch() { if (!string.IsNullOrEmpty(searchText)) { WhereFilter filter1 = new WhereFilter { Field = "Code", Operator = "contains", value = searchText }; WhereFilter filter2 = new WhereFilter { Field = "Name", Operator = "contains", value = searchText }; WhereFilter filter3 = new WhereFilter { Field = "Description", Operator = "contains", value = searchText }; WhereFilter filter4 = new WhereFilter { Field = "Header_Name", Operator = "contains", value = searchText }; QueryGrid = new Query() .Where(filter1.Or(filter2).Or(filter3).Or(filter4)); //this.grid.Refresh(); await this.grid.RefreshColumns(); //not working await this.grid.RefreshHeader(); //not working } else { QueryGrid = new Query();//.Expand(new List<string> { "Parent" }); //this.grid.Refresh(); not available await this.grid.RefreshColumns(); await this.grid.RefreshHeader(); } }
|
<SfButton OnClick="clear">Clear</SfButton>
<SfButton OnClick="filter">filter</SfButton>
<SfButton OnClick="page">page</SfButton>
<SfTreeGrid @ref="grid" DataSource="@TreeData" IdMapping="TaskId" ParentIdMapping="ParentId">
…………………………
@code{
................
private void clear()
{
grid.ClearFiltering();
}
private void filter()
{
grid.FilterByColumn("TaskId", "contains", 2);
}
private void page()
{
grid.GoToPage(2);
}
} |
Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
Unhandled exception rendering component: The specified key 'checkboxState' does not exist in the ExpandoObject.
System.Collections.Generic.KeyNotFoundException: The specified key 'checkboxState' does not exist in the ExpandoObject.
at System.Dynamic.ExpandoObject.System.Collections.Generic.IDictionary<System.String,System.Object>.get_Item(String key)
at Syncfusion.Blazor.TreeGrid.Internal.TreeCell`2.ExpandCollapseClick(MouseEventArgs e)
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)
WhereFilter codeFilter = new WhereFilter
{
Field = "Code",
Operator = "contains",
value = searchText
};
WhereFilter nameFilter = new WhereFilter
{
Field = "Name",
Operator = "contains",
value = searchText
};
WhereFilter descriptionFilter = new WhereFilter
{
Field = "Description",
Operator = "contains",
value = searchText
};
WhereFilter parentCodeFilter = new WhereFilter
{
Field = "Header_Code",
Operator = "contains",
value = searchText
};
WhereFilter parentNameFilter = new WhereFilter
{
Field = "Header_Name",
Operator = "contains",
value = searchText
};
QueryGrid = new Query()
.Where(companyFilter.And((codeFilter).Or(nameFilter).Or(descriptionFilter)));
grid.Refresh();
----------------------------------This is the final SQL that is being generatedexec sp_executesql N'SELECT [f].[Id], [f].[AccountType], [f].[AllowManualEntry], [f].[AvailableBalance], [f].[ChildCount], [f].[ClearedBalance], [f].[Code], [f].[Comments], [f].[CreateKey], [f].[CreatedBy], [f].[CreatedByUserName], [f].[CurrencyId], [f].[CurrencyId_Code], [f].[CurrencyId_DecimalPlaces], [f].[CurrencyId_Format], [f].[CurrencyId_IsActive], [f].[CurrencyId_IsDeleted], [f].[CurrencyId_Name], [f].[CurrencyId_Symbol], [f].[CurrencyId_Tags], [f].[DateCreated], [f].[DateDeleted], [f].[DateUpdated], [f].[DefaultBalanceType], [f].[DefaultCompanyId], [f].[DeleteKey], [f].[DeletedBy], [f].[DeletedByUserName], [f].[Description], [f].[FullText], [f].[HasChildren], [f].[HeaderType], [f].[Header_AccountType], [f].[Header_AllowManualEntry], [f].[Header_AvailableBalance], [f].[Header_ClearedBalance], [f].[Header_Code], [f].[Header_CurrencyId], [f].[Header_DefaultBalanceType], [f].[Header_HeaderType], [f].[Header_IsActive], [f].[Header_IsDeleted], [f].[Header_Name], [f].[Header_ParentId], [f].[Header_Tags], [f].[Header_UnclearedBalance], [f].[IsActive], [f].[IsDeleted], [f].[IsUpdated], [f].[MarkForDelete], [f].[MarkForUpdate], [f].[MetadataJson], [f].[MetadataXml], [f].[Name], [f].[ParentId], [f].[Remarks], [f].[RowKey], [f].[RowVersion], [f].[UnclearedBalance], [f].[UpdateKey], [f].[UpdatedBy], [f].[UpdatedByUserName] FROM [Fin].[FinancialAccountMasterView] AS [f] WHERE ([f].[IsDeleted] <> CAST(1 AS bit)) AND ((([f].[DefaultCompanyId] = @__TypedProperty_0) AND ((((@__TypedProperty_1 = N'''') OR (CHARINDEX(@__TypedProperty_1, [f].[Code]) > 0)) OR ((@__TypedProperty_2 = N'''') OR (CHARINDEX(@__TypedProperty_2, [f].[Name]) > 0))) OR ((@__TypedProperty_3 = N'''') OR (CHARINDEX(@__TypedProperty_3, [f].[Description]) > 0)))) AND [f].[ParentId] IS NULL) ORDER BY [f].[Id] OFFSET @__TypedProperty_4 ROWS FETCH NEXT @__TypedProperty_5 ROWS ONLY',N'@__TypedProperty_0 bigint,@__TypedProperty_1 nvarchar(128),@__TypedProperty_2 nvarchar(256),@__TypedProperty_3 nvarchar(4000),@__TypedProperty_4 int,@__TypedProperty_5 int',@__TypedProperty_0=3,@__TypedProperty_1=N'pay',@__TypedProperty_2=N'pay',@__TypedProperty_3=N'pay',@__TypedProperty_4=0,@__TypedProperty_5=12
AND [f].[ParentId] IS NULLThe above condition gets appended to each query when you run a custom search.This does not return accurate results as only top level rows with no children match that criteria.
Please can you fix this asap?Also the expand bug I reported is still not fixed. This happens when you expand a node at level 2.The exception trace is belowUnhandled exception rendering component: The specified key 'checkboxState' does not exist in the ExpandoObject.
System.Collections.Generic.KeyNotFoundException: The specified key 'checkboxState' does not exist in the ExpandoObject.
at System.Dynamic.ExpandoObject.System.Collections.Generic.IDictionary<System.String,System.Object>.get_Item(String key)
at Syncfusion.Blazor.TreeGrid.Internal.TreeCell`2.ExpandCollapseClick(MouseEventArgs e)
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)
Thanks again!