コードからのフィルタリング

AutoFilterColumnメソッドを使用することにより、コード上からもフィルタリングすることが可能です。
また、AutoFilterResetメソッドを使用することで、コード上からフィルタリングを解除することも可能です。

このサンプルでは、「フィルタリング実行」ボタン押下時にドロップダウンリストで選択された列を対象にテキストボックスに入力された値でフィルタリングを実行します。
また、「フィルタリング解除」ボタンでフィルタリングを解除します。
 
11001亀甲 滋万キコウ シゲマ1950/02/04A人事部1972/04/01
21002寒田 希世カンダ キヨ1959/06/28B人事部1981/04/01
31003小和瀬 澄オワセ キヨ1969/03/06A人事部1991/04/01
41004宇夫 早余子ウブ サヨコ1976/07/28O人事部1998/04/01
51005宇田津 聖智ウダツ キヨトモ1965/09/04A営業部1987/04/01
61006茨城 昭児イバラキ ショウジ1963/04/28O営業部1985/04/01
71007石ヶ休 椎茄イシガキュウ シイナ1953/02/21O営業部1975/04/01
81008赤司 恵治郎アカツカサ ケイジロウ1968/08/02O経理部1990/04/01
91009小橋 仰一オハシ ギョウイチ1972/03/02B経理部1994/04/01
101010一重 公大イチジュウ コウダイ1964/04/19B経理部1986/04/01
111011稲並 勝五郎イナミ ショウゴロウ1962/02/18A営業部1984/04/01
121012穎原 紀代一エイハラ キヨカズ1965/02/13O営業部1987/04/01

ソースコード

別ウィンドウで表示
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;

public partial class autofiltercolumn : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string js = "var spid='" + FpSpread1.ClientID + "';";
        js += "var ddlid='" + DropDownList1.ClientID + "';";
        js += "var txtid='" + TextBox1.ClientID + "';";
        ClientScript.RegisterStartupScript(this.GetType(), "onStartUpScript", js, true);

        if (IsPostBack) return;              
        
        // SPREADの設定
        InitSpread(FpSpread1);

        // シートの設定
        InitSheet(FpSpread1.Sheets[0]);
        
        // ドロップダウンリスト設定
        InitDDL(FpSpread1.Sheets[0]);
    }

    private void InitSpread(FarPoint.Web.Spread.FpSpread spread)
    {
        // データ連結
        DataSet ds = new DataSet();
        ds.ReadXml(MapPath("../App_Data/data.xml"));
        spread.DataSource = ds;  

        // SPREAD設定
        spread.CommandBar.Visible = false;
        spread.CssClass = "spreadStyle";
        spread.UseClipboard = false;
    }

    private void InitSheet(FarPoint.Web.Spread.SheetView sheet)
    {
        // フォントサイズの設定
        sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%");

        // シート設定
        sheet.PageSize = sheet.RowCount;

        // メールアドレス非表示
        sheet.Columns[8].Visible = false;

        // 列幅の設定
        sheet.Columns[0].Width = 36;
        sheet.Columns[1].Width = 88;
        sheet.Columns[2].Width = 91;
        sheet.Columns[3].Width = 80;
        sheet.Columns[4].Width = 36;
        sheet.Columns[5].Width = 46;
        sheet.Columns[6].Width = 49;
        sheet.Columns[7].Width = 80;
        sheet.Columns[8].Width = 200;

        // 縦方向の揃え位置を中央に設定
        sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;

        // フィルタ設定
        FarPoint.Web.Spread.HideRowFilter hideRowFilter = new FarPoint.Web.Spread.HideRowFilter(sheet);
        sheet.RowFilter = hideRowFilter; //フィルターを設定
        sheet.ColumnHeaderAutoFilterIndex = 1;
        FarPoint.Web.Spread.FilterColumnDefinition fcd;
        for (int col = 0; col < sheet.ColumnCount; col++)
        {
            fcd = new FarPoint.Web.Spread.FilterColumnDefinition(col);
            hideRowFilter.AddColumn(fcd);
        }
    }

    private void InitDDL(FarPoint.Web.Spread.SheetView sheet)
    {
        for (int i = 0; i < sheet.ColumnCount; i++)
        {
            if (sheet.Columns[i].Visible == true)
            {
                ListItem li = new ListItem();
                li.Value = Convert.ToString(i);
                li.Text = Convert.ToString(i + 1) + "列目";
                DropDownList1.Items.Add(li);
            }
        }    
    }

    protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
    {
        // フィルタリングを行う
        if (e.CommandName.StartsWith("dofilter"))
        {
            string[] strCom = e.CommandName.Split(':');
            // フィルタリングを実行
            FpSpread1.Sheets[0].AutoFilterColumn(Convert.ToInt32(strCom[1]), strCom[2]);

        } else if (e.CommandName.Equals("filterreset")){
            // フィルタリング解除
            for (int i = 0; i < FpSpread1.ActiveSheetView.ColumnCount; i++)
			{
			    FpSpread1.ActiveSheetView.AutoFilterReset(i);
			}
        }
    }
}

Partial Public Class autofiltercolumn
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim js As String = "var spid='" + FpSpread1.ClientID & "';"
        js += "var ddlid='" + DropDownList1.ClientID & "';"
        js += "var txtid='" + TextBox1.ClientID & "';"
        ClientScript.RegisterStartupScript(Me.GetType(), "onStartUpScript", js, True)

        If IsPostBack Then
            Return
        End If

        ' SPREADの設定
        InitSpread(FpSpread1)

        ' シートの設定
        InitSheet(FpSpread1.Sheets(0))

        ' ドロップダウンリスト設定
        InitDDL(FpSpread1.Sheets(0))
    End Sub

    Private Sub InitSpread(ByVal spread As FarPoint.Web.Spread.FpSpread)
        ' データ連結
        Dim ds As New System.Data.DataSet()
        ds.ReadXml(MapPath("../App_Data/data.xml"))
        spread.DataSource = ds

        ' SPREAD設定
        spread.CommandBar.Visible = False
        spread.CssClass = "spreadStyle"
        spread.UseClipboard = False
    End Sub

    Private Sub InitSheet(ByVal sheet As FarPoint.Web.Spread.SheetView)
        ' フォントサイズの設定
        sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%")

        ' シート設定
        sheet.PageSize = sheet.RowCount

        ' メールアドレス非表示
        sheet.Columns(8).Visible = False

        ' 列幅の設定
        sheet.Columns(0).Width = 36
        sheet.Columns(1).Width = 88
        sheet.Columns(2).Width = 91
        sheet.Columns(3).Width = 80
        sheet.Columns(4).Width = 36
        sheet.Columns(5).Width = 46
        sheet.Columns(6).Width = 49
        sheet.Columns(7).Width = 80
        sheet.Columns(8).Width = 200

        ' 縦方向の揃え位置を中央に設定
        sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle

        ' フィルタ設定
        Dim hideRowFilter As New FarPoint.Web.Spread.HideRowFilter(sheet)
        sheet.RowFilter = hideRowFilter
        'フィルターを設定
        sheet.ColumnHeaderAutoFilterIndex = 1
        Dim fcd As FarPoint.Web.Spread.FilterColumnDefinition
        For col As Integer = 0 To sheet.ColumnCount - 1
            fcd = New FarPoint.Web.Spread.FilterColumnDefinition(col)
            hideRowFilter.AddColumn(fcd)
        Next
    End Sub

    Private Sub InitDDL(ByVal sheet As FarPoint.Web.Spread.SheetView)
        For i As Integer = 0 To sheet.ColumnCount - 1
            If sheet.Columns(i).Visible = True Then
                Dim li As New ListItem()
                li.Value = Convert.ToString(i)
                li.Text = Convert.ToString(i + 1) & "列目"
                DropDownList1.Items.Add(li)
            End If
        Next
    End Sub

    Protected Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
        ' フィルタリングを行う
        If e.CommandName.StartsWith("dofilter") Then
            Dim strCom As String() = e.CommandName.Split(":"c)
            ' フィルタリングを実行

            FpSpread1.Sheets(0).AutoFilterColumn(Convert.ToInt32(strCom(1)), strCom(2))
        ElseIf e.CommandName.Equals("filterreset") Then
            ' フィルタリング解除
            For i As Integer = 0 To FpSpread1.ActiveSheetView.ColumnCount - 1
                FpSpread1.ActiveSheetView.AutoFilterReset(i)
            Next
        End If
    End Sub
End Class

<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true" 
         Inherits="autofiltercolumn" CodeFile="autofiltercolumn.aspx.cs" %>

<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeaderPlaceHolder1" Runat="Server">
<script type="text/javascript">
    function filter() {
        var ddl = document.getElementById(ddlid)
        var txt = document.getElementById(txtid)

        //サーバー側にCallBack
        var ss = document.getElementById(spid)
        ss.CallBack("dofilter:" + ddl.options[ddl.selectedIndex].value + ":" + txt.value);
    }

    function filterreset() {
        //サーバー側にCallBack
        var ss = document.getElementById(spid)
        ss.CallBack("filterreset");
    }
</script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:TextBox ID="TextBox1" runat="server" Width="300px"></asp:TextBox>
    <asp:DropDownList ID="DropDownList1" runat="server">
    </asp:DropDownList>
    <input id="Button1" type="button" value="フィルタリング実行" onclick="filter()" />
    <input id="Button2" type="button" value="フィルタリング解除" onclick="filterreset()" />
    <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="#A0A0A0" 
        BorderStyle="Solid" onbuttoncommand="FpSpread1_ButtonCommand">
        <CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
            ButtonShadowColor="ControlDark">
        </CommandBar>
        <Sheets>
            <FarPoint:SheetView SheetName="Sheet1">
            </FarPoint:SheetView>
        </Sheets>
    </FarPoint:FpSpread>
</asp:Content>