I've inherited a project using a RadGrid which uses session variables as filter arguments. These arguments are then appended to a StringBuilder variable, which is used as the RowFilter argument for the Dataview. This Dataview is the datasource for the grid. This is in an .ascx control which is used on several pages.
The initial filter works fine. It's when the user changes or removes the filter that I'm experiencing a problem - the grid won't display the updated results and the existing results won't expand if the user clicks on the expand arrow.
I tried to bypass the existing filter and use a RadFilter but when I click on the "add expression" button, nothing happens. Following is the declarative.
Note: I had to manually add the FilterContainerID; When I expanded the RadFilter Tasks window, "gvMission" wasn't in the dropdown list. Thanks very much.
The initial filter works fine. It's when the user changes or removes the filter that I'm experiencing a problem - the grid won't display the updated results and the existing results won't expand if the user clicks on the expand arrow.
I tried to bypass the existing filter and use a RadFilter but when I click on the "add expression" button, nothing happens. Following is the declarative.
<
telerik:RadFilter
ID
=
"RadFilter1"
runat
=
"server"
FilterContainerID
=
"gvMission"
>
<
fieldeditors
>
<
telerik:RadFilterTextFieldEditor
DisplayName
=
"Lane"
FieldName
=
"Lane"
TextBoxWidth
=
"120"
/>
</
fieldeditors
>
</
telerik:RadFilter
>
5 Answers, 1 is accepted
0

Jim
Top achievements
Rank 1
answered on 18 May 2012, 12:25 PM
Anyone? Would prefer to have a solution for the dataview problem, but at this point, whatever will work.
0
Hello Jim,
Can you share your data-binding logic? Are you using NeedDataSource as advised when using features like filtering? Also, if you have AJAX in this scenario, confirm that when running the site with script debugging on you do not receive any javascript errors (that indicate server exceptions).
Kind regards,
Tsvetina
the Telerik team
Can you share your data-binding logic? Are you using NeedDataSource as advised when using features like filtering? Also, if you have AJAX in this scenario, confirm that when running the site with script debugging on you do not receive any javascript errors (that indicate server exceptions).
Kind regards,
Tsvetina
the Telerik team
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 their blog feed now.
0

Jim
Top achievements
Rank 1
answered on 22 May 2012, 12:43 PM
Here's what they've got for NeedDataSource which, as I step through the code, gets called when a new filter is applied.
Here is the code to initialize the filter:
The FilterInit function is called during PageLoad. The others when the "Apply Filter" button is clicked.
Thanks again!
Private Sub gvMission_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles gvMission.NeedDataSource
Dim dv As DataView = BuildMissionProcedureDataView(_missionID)
With gvMission
.DataSource = dv
End With
End Sub
Here is the code to initialize the filter:
Private Sub FilterInit()
If DesignMode Then
Return
End If
If Not Session("MajorMilestone") = Nothing Then
cbMajorMilestone.Checked = Session("MajorMilestone").ToString
End If
If Not Session("Lane") = Nothing Then
ddlLane.SelectedValue = Session("Lane").ToString
End If
If Not Session("Area") = Nothing Then
ddlArea.SelectedValue = Session("Area").ToString
End If
If _statusID = 3 Then
ddlCategory.Enabled = False
Else
If Not Session("Category") = Nothing Then
ddlCategory.SelectedValue = Session("Category").ToString
End If
End If
If Not Session("StartDate") = Nothing Then
tbStartDate.Text = Session("StartDate").ToString
End If
If Not Session("EndDate") = Nothing Then
tbEndDate.Text = Session("EndDate").ToString
End If
If cbMajorMilestone.Checked = False Then
Session("MajorMilestone") = Nothing
ElseIf cbMajorMilestone.Checked = True Then
Session("MajorMilestone") = cbMajorMilestone.Checked
End If
End Sub
Private Sub FilterSave()
If cbMajorMilestone.Checked = False Then
Session("MajorMilestone") = Nothing
ElseIf cbMajorMilestone.Checked = True Then
Session("MajorMilestone") = cbMajorMilestone.Checked
End If
If ddlCategory.SelectedIndex = 0 Then
Session("Category") = Nothing
Else
Session("Category") = ddlCategory.SelectedValue
End If
If ddlLane.SelectedIndex = 0 Then
Session("Lane") = Nothing
Else
Session("Lane") = ddlLane.SelectedValue
End If
If ddlArea.SelectedIndex = 0 Then
Session("Area") = Nothing
Else
Session("Area") = ddlArea.SelectedValue
End If
If tbStartDate.Text = String.Empty Then
Session("StartDate") = Nothing
Else
Session("StartDate") = tbStartDate.Text
End If
If tbEndDate.Text = String.Empty Then
Session("EndDate") = Nothing
Else
Session("EndDate") = tbEndDate.Text
End If
End Sub
Private Sub FilterApply()
Dim filter As New StringBuilder
Dim filtertext As New StringBuilder("Click to change filter... Showing: ")
If Not Session("Category") = Nothing And _statusID <> "3" Then
filter.AppendFormat("ColorRating='{0}'", Session("Category").ToString)
filtertext.AppendFormat("Only '{0}' items ", ddlCategory.Items.FindByValue(Session("Category").ToString).Text)
Else
filtertext.Append("All ")
End If
If Not Session("MajorMilestone") = Nothing Then
If Not filter.Length = 0 And Session("MajorMilestone") = "True" Then
filter.Append(" AND ")
End If
filter.Append("(Critical = True OR MajorMilestone = True)")
filtertext.AppendFormat("Critical Gates/Major Milestones ")
Else
filtertext.Append("items ")
End If
If Not Session("Lane") = Nothing Then
If Not filter.Length = 0 Then
filter.Append(" AND ")
End If
filter.AppendFormat("LaneID={0}", Session("Lane").ToString)
filtertext.AppendFormat("within the {0} lane ", ddlLane.Items.FindByValue(Session("Lane").ToString))
Else
filtertext.Append("within all lanes ")
End If
If Not Session("Area") = Nothing Then
If Not filter.Length = 0 Then
filter.Append(" AND ")
End If
If Session("Area") = 2 Then
filter.AppendFormat("(AreaID={0} OR AreaID=4)", Session("Area").ToString)
ElseIf Session("Area") = 3 Then
filter.AppendFormat("(AreaID={0} OR AreaID=4)", Session("Area").ToString)
Else
filter.AppendFormat("AreaID={0}", Session("Area").ToString)
End If
filtertext.AppendFormat("within the {0} area ", ddlArea.Items.FindByValue(Session("Area").ToString))
Else
filtertext.Append("within all areas ")
End If
If Not Session("StartDate") = Nothing Or Not Session("EndDate") = Nothing Then
If Not filter.Length = 0 Then
filter.Append(" AND ")
End If
If (Not Session("StartDate") = Nothing) And (Not Session("EndDate") = Nothing) Then
filter.AppendFormat("((DueDate >='{0}' AND DueDate <='{1}'))", Session("StartDate").ToString, Session("EndDate").ToString)
' filter.AppendFormat("AND (DueDate <='{0})", Session("MissionDBEndDate").ToString)
filtertext.AppendFormat("with a due date between {0} and {1}", Session("StartDate").ToString, Session("EndDate").ToString)
ElseIf Not Session("StartDate") = Nothing Then
filter.AppendFormat("DueDate >='{0}'", Session("StartDate").ToString)
filtertext.AppendFormat("with a due date on or after {0} ", Session("StartDate").ToString)
ElseIf Not Session("EndDate") = Nothing Then
filter.AppendFormat("DueDate <='{0}'", Session("EndDate").ToString)
filtertext.AppendFormat("with a due date on or before {0}", Session("EndDate").ToString)
End If
End If
ViewState("filterexpression") = filter.ToString
cpe.CollapsedText = filtertext.ToString
gvMission.Rebind()
End Sub
The FilterInit function is called during PageLoad. The others when the "Apply Filter" button is clicked.
Thanks again!
0
Hello Jim,
Where are you calling FilterApply() method? It is possible that you are mixing different syntaxes in the final FilterExpression or that the additional criteria does not get applied or errors out. Have you tried building RadFilterExpressions and adding them to the filter on Page_Load?
Kind regards,
Tsvetina
the Telerik team
Where are you calling FilterApply() method? It is possible that you are mixing different syntaxes in the final FilterExpression or that the additional criteria does not get applied or errors out. Have you tried building RadFilterExpressions and adding them to the filter on Page_Load?
Kind regards,
Tsvetina
the Telerik team
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 their blog feed now.
0

Jim
Top achievements
Rank 1
answered on 30 May 2012, 01:32 PM
Problem was solved - I had to change "gvMission.ReBind()" to "gvMission.MasterTable.Rebind()".
Thank you for responding!
Thank you for responding!