Filtering on multiple column in dynamic Telerik RAD grid

2 posts, 0 answers
  1. Rajeev
    Rajeev avatar
    3 posts
    Member since:
    Oct 2013

    Posted 09 Jun Link to this post

    I am preparing dynamic grid using VB.net and RAD grid where columns are getting generated in Run Time. I am trying to apply filter (inbuilt filter) on multiple column at time but application is throwing exception (is neither a DataColumn nor a DataRelation for table Table). This error occurs when I try to apply filter. I am unable to identify root cause. Any input would be appreciated. I am using NeedDataSource() event of Radgrid and this event is throwing above mentioned exception on applying filter.

    .Telerik page setting:

    <telerik:RadGrid ID="gridData" runat="server" OnGridExporting="grid_GridExporting" RenderMode="Auto" ClientIDMode="AutoID" >
                        </telerik:RadGrid>

     

     

    Code-behibd setting:

    On page_load():

    If Not ds Is Nothing Then
                    DefineGridStructure(Session("DynamicResultReportGridData"))
                    gridData.DataBind()

    end

    --------------------------

       Private Sub DefineGridStructure(ByVal allCloumnData As DataSet)

            'Dim grid As New RadGrid()

            gridData.DataSource = allCloumnData
            Session.Add("DynamicResultReportGridData", allCloumnData)
            gridData.Skin = "Default"
            gridData.Width = Unit.Percentage(100)
            gridData.PageSize = 15
            gridData.AllowPaging = True
            gridData.AllowFilteringByColumn = True
            gridData.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric
            gridData.AutoGenerateColumns = False

            'Add Customers table
            gridData.MasterTableView.Width = Unit.Percentage(100)

            Dim intVal As Integer = allCloumnData.Tables(0).Columns.Count
            For a = 0 To intVal - 1
                Dim boundColumn As New GridBoundColumn()
                boundColumn.DataField = allCloumnData.Tables(0).Columns(a).Caption().Trim().ToString()
                boundColumn.HeaderText = allCloumnData.Tables(0).Columns(a).Caption().Trim().ToString()
                boundColumn.UniqueName = allCloumnData.Tables(0).Columns(a).Caption().Trim().ToString()
                boundColumn.ItemStyle.CssClass = "text2"

                boundColumn.HeaderStyle.CssClass = "GridHeader"
                boundColumn.AllowFiltering = True
                gridData.MasterTableView.Columns.Add(boundColumn)
            Next
        End Sub

    ----------------------------------------------------

    Protected Sub gridData_NeedDataSource(ByVal Source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles gridData.NeedDataSource

            gridDiv.Visible = True
            gridDiv1.Visible = True
            gridData.Visible = True
            Dim allCloumnData As DataSet = Session("DynamicResultReportGridData")
            If allCloumnData Is Nothing Then
            Else
                gridData.DataSource = allCloumnData
            End If


        End Sub

     

    Thanks in advance
    Rajeev

  2. Viktor Tachev
    Admin
    Viktor Tachev avatar
    1488 posts

    Posted 14 Jun Link to this post

    Hello Rajeev,

    From the provided code it seems that you are calling DataBind() for the grid. Note that this method is used only for simple data binding. As the name implies this binding method is suitable only for the most simple scenarios where features like filterin, sorting, paging, etc. will not be used.

    In your scenario it is recommended to use advanced data binding. You can bind the grid to a declarative data source or provide the data via the NeedDataSource event. Check out the following resources that illustrate the two approaches:


    After the grid is data-bound you can use the approach described below in order to define initial filter that will be applied:



    Regards,
    Viktor Tachev
    Telerik
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top