This is a migrated thread and some comments may be shown as answers.

Filter with fieldEditor, witch has fieldName not from Grid column

3 Answers 125 Views
Filter
This is a migrated thread and some comments may be shown as answers.
Petras
Top achievements
Rank 1
Petras asked on 13 Mar 2020, 08:21 PM

I am using Filter with Grid. If I set FieldName in the FieldEditors that is not in the Grid column (but from binded table), I get null reference exception after call RadFilter1.FireApplyCommand(). Is it Filter control limitation? If yes, is there work around?

 

Stack trace:

   at Telerik.Web.UI.RadFilterDataFieldEditor.CreateEditorFrom(RadFilterDataFieldEditor baseEditor)
   at Telerik.Web.UI.RadFilterSingleExpressionItem.SetupFunctionInterface(Control container)
   at Telerik.Web.UI.RadFilterExpressionItem.CreateFunctionalInterface()
   at Telerik.Web.UI.RadFilterExpressionItem.InitializeItem()
   at Telerik.Web.UI.RadFilter.CreateFilterItems()
   at Telerik.Web.UI.RadFilter.CreateControlHierarchy()
   at Telerik.Web.UI.RadFilter.CreateChildControls()
   at System.Web.UI.Control.EnsureChildControls()
   at Telerik.Web.UI.RadFilter.RecreateControl()
   at Telerik.Web.UI.RadFilter.ContainerFieldDescriptorsReady(Object sender, RadFilterFildDesciptorsEventArgs e)
   at Telerik.Web.UI.RadGrid.OnFieldDescriptorsReady(RadFilterFildDesciptorsEventArgs e)
   at Telerik.Web.UI.RadGrid.UpdateFilterControl()
   at Telerik.Web.UI.GridTableView.SavePagingData(Boolean useDataSource, GridPagingManager paging)
   at Telerik.Web.UI.GridTableView.CreateControlHierarchy(Boolean useDataSource)
   at Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource)
   at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data)
   at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data)
   at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)
   at System.Web.UI.WebControls.DataBoundControl.PerformSelect()
   at Telerik.Web.UI.GridTableView.PerformSelect()
   at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
   at Telerik.Web.UI.GridTableView.DataBind()
   at Telerik.Web.UI.GridTableView.Rebind()
   at Telerik.Web.UI.RadGrid.Telerik.Web.UI.IRadFilterableContainer.ApplyFilterExpressions(RadFilterGroupExpression expressionRoot, Boolean shouldBind)
   at Telerik.Web.UI.RadFilter.HandleApplyCommand()
   at Telerik.Web.UI.RadFilter.FireApplyCommand()
   ...

3 Answers, 1 is accepted

Sort by
0
Doncho
Telerik team
answered on 18 Mar 2020, 03:34 PM

Hi Petras,

To be able to give you an accurate answer I would require more information about the way you create the FieldEditors in the code behind.

It would be helpful if you could share the .aspx page and the code-behind and I will take a look myself.

Kind regards,
Doncho
Progress Telerik

Get quickly onboarded and successful with UI for ASP.NET AJAX with the Virtual Classroom technical trainings, available to all active customers. Learn More.
0
Petras
Top achievements
Rank 1
answered on 18 Mar 2020, 07:49 PM

Hi Doncho,

Below I am attaching code sample. If I try to filter on  field "NameAlias" and comment line <telerik:GridBoundColumn DataField="NameAlias" Visible="false" />

I get error. In uncommented version, no exception is thrown.

 

 

<telerik:RadFilter RenderMode="Lightweight" runat="server" ID="RadFilter1" FilterContainerID="RadGrid1">
    <FieldEditors>
        <telerik:RadFilterTextFieldEditor FieldName="NameAlias" DisplayName="Trumpas pav" />
    </FieldEditors>
</telerik:RadFilter>

<telerik:RadGrid RenderMode="Lightweight" runat="server" ID="RadGrid1" AutoGenerateColumns="false"
    AllowCustomPaging="true" AllowPaging="true" AllowSorting="true" EnableLinqExpressions="false"
    AllowFilteringByColumn="true" FilterType="HeaderContext" EnableHeaderContextMenu="true" EnableHeaderContextFilterMenu="true"
    GroupingEnabled="true"
    OnNeedDataSource="RadGrid1_NeedDataSource" OnDeleteCommand="RadGrid1_DeleteCommand"  Skin="Telerik">
    <ExportSettings ExportOnlyData="true" HideStructureColumns="true" IgnorePaging="true" FileName="File">
        <Excel Format="Xlsx" AutoFitImages="false" />
    </ExportSettings>
    <MasterTableView DataKeyNames="RecId" CommandItemDisplay="Top" InsertItemPageIndexAction="ShowItemOnCurrentPage">
        <Columns>
            <telerik:GridBoundColumn DataField="ItemName" MaxLength="250" Groupable="false"
                CurrentFilterFunction="Contains" AutoPostBackOnFilter="true" />
            <%--<telerik:GridBoundColumn DataField="NameAlias" Visible="false" />--%>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

0
Doncho
Telerik team
answered on 23 Mar 2020, 04:34 PM

Hi Petras,

Thank you for the additional information.

When RadGrid is used as FilterContainer, filtering can be applied only on the data fields bound to the grid. RadFilter itself has no reference to the DataSource of the grid, so using FilterEditor with FieldName that appears in the RadGrid's data source but is not bound to the grid itself, will cause null reference exception.

Filtering on a column bound to the RadGrid with Visibile property set to "false" is a working solution.

If you prefer to filter on DataSource control instead of the Grid, you can check out the Integration with DataSource Controls article.

Kind regards,
Doncho
Progress Telerik

Progress is here for your business, like always. Read more about the measures we are taking to ensure business continuity and help fight the COVID-19 pandemic.
Our thoughts here at Progress are with those affected by the outbreak.

Tags
Filter
Asked by
Petras
Top achievements
Rank 1
Answers by
Doncho
Telerik team
Petras
Top achievements
Rank 1
Share this question
or