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 Answers, 1 is accepted
0
Roberto
Top achievements
Rank 1
answered on 06 Apr 2016, 01:19 PM
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
0
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
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.
