Massimiliano
Top achievements
Rank 1
Massimiliano
asked on 15 Jul 2013, 12:12 PM
It seems that if you set, for example, in the declarative .aspx page CurrentFilterFunction="StartsWith" on some columns together with AutoPostBackOnFilter="true", something weird happens.
The first time you insert a value and click "enter" (or tab or whatever to start the auto postback filtering) everything works as expected and the column is correctly filtered with a value that "StartWith" but at the same time alle the other columns are reset to "Contains", even if in the declarative code they all have CurrentFilterFunction="StartsWith" .
EDIT: maybe this is intended such that after the first filtering happens all other columns are set to "NoFilter" regardless of the CurrentFilterFunction="StartsWith" but it's somehow counter intuitive from a coding standpoint. As far as the filter texbox is empty and the CurrentFilterFunction is implemented it should remain as the deafult-ready one I guess.
The first time you insert a value and click "enter" (or tab or whatever to start the auto postback filtering) everything works as expected and the column is correctly filtered with a value that "StartWith" but at the same time alle the other columns are reset to "Contains", even if in the declarative code they all have CurrentFilterFunction="StartsWith" .
EDIT: maybe this is intended such that after the first filtering happens all other columns are set to "NoFilter" regardless of the CurrentFilterFunction="StartsWith" but it's somehow counter intuitive from a coding standpoint. As far as the filter texbox is empty and the CurrentFilterFunction is implemented it should remain as the deafult-ready one I guess.
6 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 17 Jul 2013, 11:05 AM
Hi,
Try setting the DataType property of the Column to String.
ASPX:
Thanks,
Princy.
Try setting the DataType property of the Column to String.
ASPX:
<telerik:GridBoundColumn DataField="EmployeeID" AutoPostBackOnFilter="true" DataType="System.String" CurrentFilterFunction="StartsWith"></telerik:GridBoundColumn>Thanks,
Princy.
0
Massimiliano
Top achievements
Rank 1
answered on 17 Jul 2013, 04:48 PM
Hi Princy, I saw many great answers from you in the forum! Thanks for this one.
This is not a big issue is just an "usability" plus so it doesn't matter if we don't solve it. Just wondering if it was intended
It seems I already have the System.String datatype set:
I'm doing the sorting and filtering server side in NeedDataSource event, but I just read FilterExpression there and pass it to my custom BLL object. So I don't do any tweaks to the Column.CurrentFilterFunction there... well really I do it but just for the date columns that way:
Inside my "FilterDateToDB" method I do adjust the CurrentFilterFunction. But I don't touch the string one.
I didn't try on a clean simple grid with CurrentFilterFunction="StartsWith" and AutoPostBackOnFilter="true" on some GridBoundColumns, but I guess it's a design "issue".
This is not a big issue is just an "usability" plus so it doesn't matter if we don't solve it. Just wondering if it was intended
It seems I already have the System.String datatype set:
<telerik:GridBoundColumn UniqueName="UserName" DataField="UserName" DataType="System.String" HeaderText="Nome utente" ColumnGroupName="Anagrafica" HtmlEncode="true" ShowFilterIcon="true" FilterImageToolTip="" AutoPostBackOnFilter="true" CurrentFilterFunction="StartsWith" ConvertEmptyStringToNull="true" FilterControlWidth="70%" ItemStyle-CssClass="RadGridBatchEditInput">
</telerik:GridBoundColumn>I'm doing the sorting and filtering server side in NeedDataSource event, but I just read FilterExpression there and pass it to my custom BLL object. So I don't do any tweaks to the Column.CurrentFilterFunction there... well really I do it but just for the date columns that way:
For Each filterColumn As Telerik.Web.UI.GridColumn In view.Columns ' Adjust date values If Not String.IsNullOrWhiteSpace(filterColumn.EvaluateFilterExpression()) Then Select Case filterColumn.ColumnType.ToString Case "GridDateTimeColumn" Dim dateColumn As GridDateTimeColumn = CType(filterColumn, GridDateTimeColumn) viewFilter = Replace(viewFilter, filterColumn.EvaluateFilterExpression(), FilterDateToDb(dateColumn, grid)) End Select End IfNextInside my "FilterDateToDB" method I do adjust the CurrentFilterFunction. But I don't touch the string one.
I didn't try on a clean simple grid with CurrentFilterFunction="StartsWith" and AutoPostBackOnFilter="true" on some GridBoundColumns, but I guess it's a design "issue".
0
Hello,
The experienced behavior is expected. When setting the AutoPostBackOnFilter property on a grid column the filter function used is Contains. However, I could ensure you I have contacted our dev team for further consideration if the behavior could be changed in order to handle cases like yours.
Regards,
Antonio Stoilkov
Telerik
The experienced behavior is expected. When setting the AutoPostBackOnFilter property on a grid column the filter function used is Contains. However, I could ensure you I have contacted our dev team for further consideration if the behavior could be changed in order to handle cases like yours.
Regards,
Antonio Stoilkov
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
0
Massimiliano
Top achievements
Rank 1
answered on 22 Jul 2013, 09:38 AM
Hallo Antonio, thank you for replying back.
Really when I set CurrentFilterFunction="StartsWith" and AutoPostBackOnFilter="true" on a column, the auto postback works as expected and pressing "enter" (or tab or wathever) triggers the filter that actually starts with the entered chars.
The problem arise on the following filter in another column where I put CurrentFilterFunction="StartsWith" and AutoPostBackOnFilter="true" that for some reason get reset to "Contains".
So it works indeed but only on first filtering action.
Really when I set CurrentFilterFunction="StartsWith" and AutoPostBackOnFilter="true" on a column, the auto postback works as expected and pressing "enter" (or tab or wathever) triggers the filter that actually starts with the entered chars.
The problem arise on the following filter in another column where I put CurrentFilterFunction="StartsWith" and AutoPostBackOnFilter="true" that for some reason get reset to "Contains".
So it works indeed but only on first filtering action.
0
Princy
Top achievements
Rank 2
answered on 22 Jul 2013, 10:54 AM
Hi ,
Please try the following code snippet to keep the Filter function to "StartsWith".
ASPX:
C#:
Thanks,
Princy
Please try the following code snippet to keep the Filter function to "StartsWith".
ASPX:
<Columns> <telerik:GridBoundColumn UniqueName="ShipCountry" DataField="ShipCountry" HeaderText="ShipCountry" CurrentFilterFunction="StartsWith" AutoPostBackOnFilter="true" /> <telerik:GridBoundColumn DataField="ShipCity" HeaderText="ShipCity" UniqueName="ShipCity" AutoPostBackOnFilter="true" /></Columns>C#:
protected void RadGrid1_PreRender(object sender, EventArgs e) { RadGrid1.Columns[1].CurrentFilterFunction = GridKnownFunction.StartsWith;//Setting currentfilter function for second column
RadGrid1.Rebind(); }Thanks,
Princy
0
Massimiliano
Top achievements
Rank 1
answered on 22 Jul 2013, 11:39 AM
Hallo Princy, this could surely work as a fix. I should check first if the filter box of the column is empty before setting the FilterFunction to the default value (StartsWith), otherwise you may have just made a filtered search on that column for some other function and when you open the menu you find it set to "StartsWith" (I hope it's clear what I mean).
So the workaround is ok with a simple check to know if there is any actual filter value for that column.
Something like this should go...
If you want to adjust columns by column UniqueName try this
Thank you for showing the path to follow
So the workaround is ok with a simple check to know if there is any actual filter value for that column.
Something like this should go...
Protected Sub RadGrid1_PreRender(sender As Object, e As EventArgs) Handles RadGrid1.PreRender If String.IsNullOrWhiteSpace(RadGrid1.Columns(1).CurrentFilterValue) Then RadGrid1.Columns(1).CurrentFilterFunction = GridKnownFunction.StartsWith 'Setting currentfilter function for second column End If RadGrid1.Rebind()End SubIf you want to adjust columns by column UniqueName try this
Protected Sub RadGrid1_PreRender(sender As Object, e As EventArgs) Handles RadGrid1.PreRender For Each column As GridColumn In RadGrid1.Columns If column.UniqueName = "UserName" OrElse column.UniqueName = "FirstName" OrElse column.UniqueName = "LastName" OrElse column.UniqueName = "CoommunityRole" Then If String.IsNullOrWhiteSpace(column.CurrentFilterValue) Then column.CurrentFilterFunction = GridKnownFunction.StartsWith End If End If NextEnd SubThank you for showing the path to follow