Share via


SetFilterEventArgs.FilterExpression property

NOTE: This API is now obsolete.

Gets or sets the filter expression for a list provided by a WebPartThat implements the IFilterProvider interface when the SetFilterEvent occurs.

Namespace:  Microsoft.SharePoint.WebPartPages.Communication
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
<ObsoleteAttribute("Use System.Web.UI.WebControls.WebParts.IWebPartParameters instead")> _
Public Property FilterExpression As String
    Get
    Set
'Usage
Dim instance As SetFilterEventArgs
Dim value As String

value = instance.FilterExpression

instance.FilterExpression = value
[ObsoleteAttribute("Use System.Web.UI.WebControls.WebParts.IWebPartParameters instead")]
public string FilterExpression { get; set; }

Property value

Type: System.String
The provided filter expression.

Remarks

The FilterExpression property is composed of a series of field name and field value pairs grouped by a unique number, such as FilterField1=FieldName1&FilterValue1=FieldValue1&FilterField2=FieldName2&FilterValue2=FieldValue2.

It can also be appended by a sort expression, such as FilterField1=FieldName1&FilterValue1=FieldValue1&SortField=FieldName&SortDir=SortDirection. If SortField is not provided, no sorting should be applied to a list. If SortField is provided, but SortDirection is not, the list should be sorted in the ascending direction.

For cross page connections, the entire expression will be URL encoded, for example, spaces are replaced with %20. Otherwise, no URL encoding will be used.

Note

The value returned by the FilterExpression property does not necessarily have to be used to filter a list. The Web Part consuming this value uses the name/value pairs for other purposes.

Examples

The following code example shows a PartCommunicationsMain method that uses the FilterExpression property to set the provided filter expression. This code example is part of a larger example provided for the IFilterProvider interface.

' Step #7: Override the PartCommunicationMain() method.
' The PartCommunicationMain method is called by the Web Part 
' infrastructure on the client during the ASP.NET PreRender
' event to allow the part to pass its primary data to the other 
' connected parts. It is important to always fire either the SetFilter, 
' NoFilter, or ClearFilter event. Some parts may not behave properly if 
' they are left waiting for this information.
' SetFilter should be fired to send the filter expression.
' NoFilter should be fired to indicate that there is no change in the 
' filter expression. ClearFilter should be fired to indicate that the 
' filter should be removed.
Public Overrides Sub PartCommunicationMain()
   ' Ensure that all of the Web Part's controls are created.
   EnsureChildControls()
   
   ' Check if connected.
   If _connected Then
      ' Check which button was clicked.
      If _setFilterClicked = True Then
             ' Create the SetFilterEventArgs object for the SetFilter 
             ' event.
             Dim setFilterEventArgs As New SetFilterEventArgs()
             
            ' Create the filter expression.
             Dim eIndex As Integer = 1
             Dim filterExpression As String = String.Empty
             Dim index As Integer
             For index = 0 To _fieldList.Length - 1
                ' This filter expression syntax should be used with 
                ' SharePoint lists and other Microsoft Web Parts that 
                ' support the IFilterConsumer interface.
                If _filterInputs(index).Text <> String.Empty Then
                   filterExpression += FieldLabel + eIndex.ToString() + "=" + _fieldList(index) + "&"
                   filterExpression += ValueLabel + eIndex.ToString() + "=" + _filterInputs(index).Text + "&"
                   eIndex += 1
                End If
             Next index
                  
            ' Trim Off Trailing '&'
            If filterExpression.Length <> 0 Then
               filterExpression = filterExpression.Substring(0, filterExpression.Length - 1)
            End If 
            ' Set the FilterExpression property on the 
            ' SetFilterEventArgs object.
            setFilterEventArgs.FilterExpression = filterExpression
          
            ' Set the _filterExpression variable for display in the 
            ' user interface.
            _filterExpression = filterExpression
      
           ' Fire the event.
            RaiseEvent SetFilter(Me, setFilterEventArgs)
            _setFilterClicked = False
         End If
      ElseIf _clearFilterClicked = True Then
            RaiseEvent ClearFilter(Me, New EventArgs())
            _clearFilterClicked = False
            
            ' Clear out values in input text boxes.
            If Not (_filterInputs Is Nothing) Then
               Dim index As Integer
               For index = 0 To _filterInputs.Length - 1
                  _filterInputs(index).Text = String.Empty
               Next index
            End If
      ElseIf _noFilterClicked = True Then
            RaiseEvent NoFilter(Me, New EventArgs())
            _noFilterClicked = False
     Else
            RaiseEvent NoFilter(Me, New EventArgs())
     End If
 End Sub
// Step #7: Override the PartCommunicationMain() method.
// The PartCommunicationMain method is called by the Web Part 
// infrastructure on the client during the ASP.NET PreRender
// event to allow the part to pass its primary data to the other 
// connected parts.
// It is important to always fire either the SetFilter, NoFilter, or 
// ClearFilter event. Some parts may not behave properly if they are 
// left waiting for this information.
// SetFilter should be fired to send the filter expression.
// NoFilter should be fired to indicate that there is no change in the filter expression.
// ClearFilter should be fired to indicate that the filter should be removed.
public override void PartCommunicationMain()
{
    // Ensure that all of the Web Part's controls are created.
    EnsureChildControls();

    // Check if connected.
    if(_connected)
    {
        // Check which button was clicked.
        if(_setFilterClicked == true)
        {
            // If there is a listener, fire the SetFilter event.
            if (SetFilter != null)
            {
                // Create the SetFilterEventArgs object for the SetFilter event.
                SetFilterEventArgs setFilterEventArgs = new SetFilterEventArgs();

                // Create the filter expression.
                int eIndex = 1;
                string filterExpression = string.Empty;
                for (int index = 0; index < _fieldList.Length; index++)
                {
                    // This filter expression syntax should be used 
                    // with SharePoint lists
                    // and other Microsoft Web Parts that support the 
                    // IFilterConsumer interface.
                    if (_filterInputs[index].Text != string.Empty)
                    {
                        filterExpression += FieldLabel + eIndex.ToString() + "=" + _fieldList[index] + "&";
                        filterExpression += ValueLabel + eIndex.ToString() + "=" + _filterInputs[index].Text + "&";
                        eIndex++;
                    }
                }

                // Trim Off Trailing '&'
                if (filterExpression.Length != 0)
                    filterExpression = filterExpression.Substring(0,filterExpression.Length - 1);

                // Set the FilterExpression property on the 
                // SetFilterEventArgs object.
                setFilterEventArgs.FilterExpression = filterExpression;

                // Set the _filterExpression variable for display in 
                // the user interface.
                _filterExpression = filterExpression;

                // Fire the event.
                SetFilter(this, setFilterEventArgs);

                _setFilterClicked = false;
            }
        }
        else if(_clearFilterClicked == true)
        {
            // If there is a listener, fire the ClearFilter event.
            if (ClearFilter != null)
            {
                ClearFilter(this, new EventArgs());

                _clearFilterClicked = false;

                // Clear out values in input text boxes.
                if (_filterInputs != null)
                {
                    for (int index = 0; index < _filterInputs.Length; index++)
                        _filterInputs[index].Text = string.Empty;
                }
            }
        }
        else if(_noFilterClicked == true)
        {
            // If there is a listener, fire the NoFilter event.
            if (NoFilter != null)
            {
                NoFilter(this, new EventArgs());

                _noFilterClicked = false;
            }
        }
        else
        {
            // If there is a listener, fire the NoFilter event.
            if (NoFilter != null)
            {
                NoFilter(this, new EventArgs());
            }
        }
    }
}

See also

Reference

SetFilterEventArgs class

SetFilterEventArgs members

Microsoft.SharePoint.WebPartPages.Communication namespace