RadGrid filter hides records until page refresh

Selecting a filter that shows less data seems to remove this data. Selecting another filter that should bring this data back does not do it. The goal is to have client-side filtering.

Here are the JS filters triggered by buttons:

function Filter1() {
    $find("<%= TheRadGrid.ClientID %>").get_masterTableView().filter("Data1", true, Telerik.Web.UI.GridFilterFunction.EqualTo);
}

function Filter2() {
    $find("<%= TheRadGrid.ClientID %>").get_masterTableView().filter("Data2", false, Telerik.Web.UI.GridFilterFunction.EqualTo);
}

function Filter3() {
    $find("<%= TheRadGrid.ClientID %>").get_masterTableView().filter("Data3", true, Telerik.Web.UI.GridFilterFunction.EqualTo);
}

Here is the RadGrid:

<telerik:RadGrid RenderMode="Lightweight" ID="TheRadGrid" runat="server" OnNeedDataSource="TheRadGrid_NeedDataSource" AutoGenerateColumns="False" AllowSorting="True" AllowMultiRowSelection="true" AllowPaging="True" GroupingSettings-CaseSensitive="false" Skin="Default" ClientSettings-Selecting-AllowRowSelect="true">
    <MasterTableView DataKeyNames="Id" AllowFilteringByColumn="true">
        <Columns>
            <telerik:GridBoundColumn UniqueName="Data1" DataField="Data1" HeaderText="Data1" AllowFiltering="true" AutoPostBackOnFilter="true"></telerik:GridBoundColumn>
            <telerik:GridBoundColumn UniqueName="Data2" DataField="Data2" HeaderText="Data2" AllowFiltering="true" AutoPostBackOnFilter="true"></telerik:GridBoundColumn>
            <telerik:GridBoundColumn UniqueName="Data3" DataField="Data3" HeaderText="Data3" AllowFiltering="true" AutoPostBackOnFilter="true"></telerik:GridBoundColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

Some code-behind:

protected void TheRadGrid_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
        TheRadGrid.DataSource = SourceClassObject;
}

What could be missing here?