Telerik Ajax Grid - Textbox value filter does NOT work with Double Quotes

3 posts, 0 answers
  1. Neelesh
    Neelesh avatar
    1 posts
    Member since:
    Apr 2016

    Posted 06 Apr Link to this post

    Hi,

    We are using Telerik Web UI for AJAX (version 2015.2.729.45). In grid we have data with double quotes (") and filter control is TextBox. Searching text with double quotes fails the search.

    please see the attachment.

    Code being used - Using the aspx standard script.

     <telerik:GridBoundColumn DataField="Name" HeaderText="Header" UniqueName="Name" FilterControlWidth="260px" AllowFiltering="true" ShowFilterIcon="false" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" />

    Kindly let us know for the solution.

    Thanks.

    Neelesh

  2. Roberto
    Roberto avatar
    13 posts
    Member since:
    Mar 2011

    Posted 06 Apr in reply to Neelesh Link to this post

    In RadGrid add EnableLinqExpressions="false"

    On CodeBehind intercept RadGrid1_ItemCommand and add this changes:

    Protected Sub RadGrid1_ItemCommand(sender As Object, e As GridCommandEventArgs) Handles RadGrid1.ItemCommand
     
           If e.CommandName = RadGrid.FilterCommandName Then
               e.Canceled = True
               Dim filterPair As Pair = CType(e.CommandArgument, Pair)
               Dim ColumnName As String = filterPair.Second.ToString()
               Dim Column As GridColumn = RadGrid1.MasterTableView.GetColumn(ColumnName)
               Dim tbPattern As Object = Nothing
               Dim ControlValues As String = Nothing
               Dim GridFilterExpression As String = RadGrid1.MasterTableView.FilterExpression
               Dim CurrentFilterExpression As String = ""
               Dim NewFilterExpression As String = ""
     
               Dim ctrltype As String = CType(e.Item, GridFilteringItem)(ColumnName).Controls(0).GetType.ToString
     
               If CType(e.Item, GridFilteringItem)(ColumnName).Controls(0).GetType.ToString = "Telerik.Web.UI.RadMaskedTextBox" Then
                   tbPattern = CType((CType(e.Item, GridFilteringItem))(ColumnName).Controls(0), RadMaskedTextBox)
                   ControlValues = tbPattern.TextWithLiterals
               ElseIf CType(e.Item, GridFilteringItem)(ColumnName).Controls(0).GetType.ToString = "System.Web.UI.WebControls.TextBox" Then
                   tbPattern = CType((CType(e.Item, GridFilteringItem))(ColumnName).Controls(0), TextBox)
                   ControlValues = tbPattern.Text
               ElseIf CType(e.Item, GridFilteringItem)(ColumnName).Controls(0).GetType.ToString = "System.Web.UI.WebControls.CheckBox" Then
                   tbPattern = CType((CType(e.Item, GridFilteringItem))(ColumnName).Controls(0), CheckBox)
                   ControlValues = tbPattern.checked.ToString
               ElseIf CType(e.Item, GridFilteringItem)(ColumnName).Controls(0).GetType.ToString = "Telerik.Web.UI.RadDatePicker" Then
                   tbPattern = CType((CType(e.Item, GridFilteringItem))(ColumnName).Controls(0), RadDatePicker)
                   ControlValues = tbPattern.SelectedDate.ToString
               ElseIf CType(e.Item, GridFilteringItem)(ColumnName).Controls(0).GetType.ToString = "Telerik.Web.UI.RadNumericTextBox" Then
                   tbPattern = CType((CType(e.Item, GridFilteringItem))(ColumnName).Controls(0), RadNumericTextBox)
                   ControlValues = tbPattern.Value.ToString
               End If
     
               NewFilterExpression = MakeFilterExpression(filterPair.Second, filterPair.First.ToString(), ControlValues)
               Column.CurrentFilterFunction = RetGridKnownFunction(filterPair.First.ToString())
               If Column.CurrentFilterFunction = GridKnownFunction.NoFilter Then Column.CurrentFilterValue = ""
     
               Dim StartPos As Integer = InStr(GridFilterExpression, "([" + filterPair.Second + "]")
               Dim EndPos As Integer = InStr(StartPos + 1, GridFilterExpression, ")")
     
               If StartPos > 1 Then CurrentFilterExpression = "AND "
               If EndPos > 0 And GridFilterExpression.Contains(filterPair.Second) Then CurrentFilterExpression += Mid(GridFilterExpression, StartPos, EndPos + 2 - StartPos)
     
               If GridFilterExpression = "" Then
                   RadGrid1.MasterTableView.FilterExpression = NewFilterExpression
               ElseIf GridFilterExpression = CurrentFilterExpression Then
                   RadGrid1.MasterTableView.FilterExpression = Trim(Replace(RadGrid1.MasterTableView.FilterExpression, CurrentFilterExpression, NewFilterExpression))
               Else
                   RadGrid1.MasterTableView.FilterExpression = Trim(Replace(RadGrid1.MasterTableView.FilterExpression, CurrentFilterExpression, "")) + IIf(Not String.IsNullOrEmpty(NewFilterExpression), " AND " + NewFilterExpression + "", "")
               End If
     
               If Left(RadGrid1.MasterTableView.FilterExpression, "3") = "AND" Then RadGrid1.MasterTableView.FilterExpression = Trim(Mid(RadGrid1.MasterTableView.FilterExpression, 5, Len(RadGrid1.MasterTableView.FilterExpression)))
               RadGrid1.Rebind()
     
           End If
       End Sub
     
       Function MakeFilterExpression(ColumnName As String, CurrentFilterFunction As String, Value As String) As String
     
           Dim Ret As String = ""
     
           Select Case CurrentFilterFunction
               Case "NoFilter"
                   Ret = ""
               Case "Contains"
                   Ret = "([" + ColumnName + "] Like '%" + Value + "%')"
               Case "DoesNotContain"
                   Ret = "([" + ColumnName + "] Not Like '%" + Value + "%')"
               Case "StartsWith"
                   Ret = "([" + ColumnName + "] Like '" + Value + "%')"
               Case "EndsWith"
                   Ret = "([" + ColumnName + "] Like '%" + Value + "')"
               Case "EqualTo"
                   Ret = "([" + ColumnName + "] = '" + Value + "')"
               Case "NotEqualTo"
                   Ret = "([" + ColumnName + "] <> '" + Value + "')"
               Case "GreaterThan"
                   Ret = "([" + ColumnName + "] > '" + Value + "')"
               Case "GreaterThanOrEqualTo"
                   Ret = "([" + ColumnName + "] >= '" + Value + "')"
               Case "LessThan"
                   Ret = "([" + ColumnName + "] < '" + Value + "')"
               Case "LessThanOrEqualTo"
                   Ret = "([" + ColumnName + "] <= '" + Value + "')"
               Case "IsEmpty"
                   Ret = "([" + ColumnName + "] = '')"
               Case "NotIsEmpty"
                   Ret = "([" + ColumnName + "] <> '')"
               Case "IsNull"
                   Ret = "([" + ColumnName + "] IS NULL)"
               Case "NotIsNull"
                   Ret = "([" + ColumnName + "] NOT IS NULL)"
           End Select
     
           Return Ret
     
       End Function
     
       Function RetGridKnownFunction(FilterFunction As String) As GridKnownFunction
     
           Dim KFunction As GridKnownFunction
     
           Select Case FilterFunction
               Case "NoFilter"
                   KFunction = GridKnownFunction.NoFilter
               Case "Contains"
                   KFunction = GridKnownFunction.Contains
               Case "DoesNotContain"
                   KFunction = GridKnownFunction.DoesNotContain
               Case "StartsWith"
                   KFunction = GridKnownFunction.StartsWith
               Case "EndsWith"
                   KFunction = GridKnownFunction.EndsWith
               Case "EqualTo"
                   KFunction = GridKnownFunction.EqualTo
               Case "NotEqualTo"
                   KFunction = GridKnownFunction.NotEqualTo
               Case "GreaterThan"
                   KFunction = GridKnownFunction.GreaterThan
               Case "GreaterThanOrEqualTo"
                   KFunction = GridKnownFunction.GreaterThanOrEqualTo
               Case "LessThan"
                   KFunction = GridKnownFunction.LessThan
               Case "LessThanOrEqualTo"
                   KFunction = GridKnownFunction.LessThanOrEqualTo
               Case "IsEmpty"
                   KFunction = GridKnownFunction.IsEmpty
               Case "NotIsEmpty"
                   KFunction = GridKnownFunction.NotIsEmpty
               Case "IsNull"
                   KFunction = GridKnownFunction.IsNull
               Case "NotIsNull"
                   KFunction = GridKnownFunction.NotIsNull
           End Select
     
           Return KFunction
     
       End Function

     

     

  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Eyup
    Admin
    Eyup avatar
    3005 posts

    Posted 11 Apr Link to this post

    Hi Neelesh,

    You can also check the following threads:
    http://www.telerik.com/forums/filter-data-with-double-quotes
    http://www.telerik.com/forums/radgrid-filter-with-and-and-or

    Regards,
    Eyup
    Telerik
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
Back to Top