フィルタリングイベント

フィルタリング実行の前後において、サーバー側とクライアント側で専用のイベントが発生します。 サーバー側とクライアント側の両方で、フィルタリングのキャンセルやフィルタリング後の処理を 行うことができます。

このサンプルでは、氏名列のフィルタリングをサーバー側でキャンセルしています。
ここにフィルタリングの結果を表示します
 ID氏名カナ生年月日性別血液型部署入社日
    
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.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class filtering_filterevent : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack) return;

        // SPREADの設定
        InitSpread(FpSpread1);

        // シートの設定
        InitSheet(FpSpread1.Sheets[0]);
    }

    private void InitSpread(FarPoint.Web.Spread.FpSpread spread)
    {
        // データ連結
        System.Data.DataSet ds = 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;       
    }

    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%");

        // タイトルの表示
        FpSpread1.TitleInfo.Visible = true;
        FpSpread1.TitleInfo.Text = "ここにフィルタリングの結果を表示します";

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

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

        // 列幅の設定
        sheet.Columns[0].Width = 40;
        sheet.Columns[1].Width = 90;
        sheet.Columns[2].Width = 97;
        sheet.Columns[3].Width = 80;
        sheet.Columns[4].Width = 70;
        sheet.Columns[5].Width = 70;
        sheet.Columns[6].Width = 75;
        sheet.Columns[7].Width = 80;

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

        sheet.ColumnHeaderAutoTextIndex = 0;
        sheet.ColumnHeader.RowCount = 2;

        // フィルターを設定
        FarPoint.Web.Spread.HideRowFilter hideRowFilter = new FarPoint.Web.Spread.HideRowFilter(sheet);
        hideRowFilter.AllString = "<すべて>";
        hideRowFilter.NonBlanksString = "<空白以外>";
        sheet.RowFilter = hideRowFilter; //フィルターを設定
        sheet.ColumnHeaderAutoFilterIndex = 1;

        // フィルターに列を追加
        FarPoint.Web.Spread.FilterColumnDefinition fcd;
        fcd = new FarPoint.Web.Spread.FilterColumnDefinition(1);
        hideRowFilter.AddColumn(fcd);
        fcd = new FarPoint.Web.Spread.FilterColumnDefinition(4);
        hideRowFilter.AddColumn(fcd);
        fcd = new FarPoint.Web.Spread.FilterColumnDefinition(5);
        hideRowFilter.AddColumn(fcd);
        fcd = new FarPoint.Web.Spread.FilterColumnDefinition(6);
        hideRowFilter.AddColumn(fcd);
    }

    protected void FpSpread1_AutoFilteredColumn(object sender, FarPoint.Web.Spread.AutoFilteredColumnEventArgs e)
    {
        FpSpread1.TitleInfo.Text = e.Col.ToString() + "列目の「" + e.FilterString + "」でフィルタリングしました";
    }

    protected void FpSpread1_AutoFilteringColumn(object sender, FarPoint.Web.Spread.AutoFilteringColumnEventArgs e)
    {
        if (e.Col == 1)
        {
            FpSpread1.TitleInfo.Text = e.Col.ToString() + "列目のフィルタリングをキャンセルしました";
            e.Cancel = true;
        }
    }
}
Partial Class filtering_filterevent
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            Return
        End If

        ' SPREADの設定
        InitSpread(FpSpread1)

        ' シートの設定
        InitSheet(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%")

        ' タイトルの表示
        FpSpread1.TitleInfo.Visible = True
        FpSpread1.TitleInfo.Text = "ここにフィルタリングの結果を表示します"

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

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

        ' 列幅の設定
        sheet.Columns(0).Width = 40
        sheet.Columns(1).Width = 90
        sheet.Columns(2).Width = 97
        sheet.Columns(3).Width = 80
        sheet.Columns(4).Width = 70
        sheet.Columns(5).Width = 70
        sheet.Columns(6).Width = 75
        sheet.Columns(7).Width = 80

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

        sheet.ColumnHeaderAutoTextIndex = 0
        sheet.ColumnHeader.RowCount = 2

        ' フィルターを設定
        Dim hideRowFilter As New FarPoint.Web.Spread.HideRowFilter(sheet)
        hideRowFilter.AllString = "<すべて>"
        hideRowFilter.NonBlanksString = "<空白以外>"
        sheet.RowFilter = hideRowFilter
        'フィルターを設定
        sheet.ColumnHeaderAutoFilterIndex = 1

        ' フィルターに列を追加
        Dim fcd As FarPoint.Web.Spread.FilterColumnDefinition
        fcd = New FarPoint.Web.Spread.FilterColumnDefinition(1)
        hideRowFilter.AddColumn(fcd)
        fcd = New FarPoint.Web.Spread.FilterColumnDefinition(4)
        hideRowFilter.AddColumn(fcd)
        fcd = New FarPoint.Web.Spread.FilterColumnDefinition(5)
        hideRowFilter.AddColumn(fcd)
        fcd = New FarPoint.Web.Spread.FilterColumnDefinition(6)
        hideRowFilter.AddColumn(fcd)
    End Sub

    Protected Sub FpSpread1_AutoFilteredColumn(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.AutoFilteredColumnEventArgs) Handles FpSpread1.AutoFilteredColumn
        FpSpread1.TitleInfo.Text = e.Col.ToString() & "列目の「" & Convert.ToString(e.FilterString) & "」でフィルタリングしました"
    End Sub

    Protected Sub FpSpread1_AutoFilteringColumn(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.AutoFilteringColumnEventArgs) Handles FpSpread1.AutoFilteringColumn
        If e.Col = 1 Then
            FpSpread1.TitleInfo.Text = e.Col.ToString() & "列目のフィルタリングをキャンセルしました"
            e.Cancel = True
        End If
    End Sub
End Class

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" 
         CodeFile="filterevent.aspx.cs" Inherits="filtering_filterevent" %>

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

<asp:Content ID="Content1" ContentPlaceHolderID="HeaderPlaceHolder1" Runat="Server">
    <script language="javascript" type="text/javascript">
		function FpSpread1_AutoFilteredColumn(event){
		    alert(event.col + "列目でフィルタリングされました");
		}
		function FpSpread1_AutoFilteringColumn(event){
		    if (!confirm("フィルタリングしますか?")) {
		        event.cancel = true;
		    }
		}
	</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="#A0A0A0" BorderStyle="Solid"
        BorderWidth="1px" onautofilteredcolumn="FpSpread1_AutoFilteredColumn" 
        onautofilteringcolumn="FpSpread1_AutoFilteringColumn">
        <CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
            ButtonShadowColor="ControlDark">
<Background BackgroundImageUrl="SPREADCLIENTPATH:/img/cbbg.gif"></Background>
        </CommandBar>
        <Sheets>
            <FarPoint:SheetView SheetName="Sheet1">
            </FarPoint:SheetView>
        </Sheets>
        <ClientEvents AutoFilteredColumn="FpSpread1_AutoFilteredColumn" 
            AutoFilteringColumn="FpSpread1_AutoFilteringColumn" />

<TitleInfo BackColor="#E7EFF7" ForeColor="" HorizontalAlign="Center" VerticalAlign="NotSet" Font-Size="X-Large"></TitleInfo>
    </FarPoint:FpSpread>
</asp:Content>