フィルタリングイベント
フィルタリング実行の前後において、サーバー側とクライアント側で専用のイベントが発生します。
サーバー側とクライアント側の両方で、フィルタリングのキャンセルやフィルタリング後の処理を
行うことができます。
このサンプルでは、氏名列のフィルタリングをサーバー側でキャンセルしています。
|
| ID | 氏名 | カナ | 生年月日 | 性別 | 血液型 | 部署 | 入社日 |
| | | | | | | |
1 | 1001 | 亀甲 滋万 | キコウ シゲマ | 1950/02/04 | 男 | A | 人事部 | 1972/04/01 |
2 | 1002 | 寒田 希世 | カンダ キヨ | 1959/06/28 | 女 | B | 人事部 | 1981/04/01 |
3 | 1003 | 小和瀬 澄 | オワセ キヨ | 1969/03/06 | 男 | A | 人事部 | 1991/04/01 |
4 | 1004 | 宇夫 早余子 | ウブ サヨコ | 1976/07/28 | 女 | O | 人事部 | 1998/04/01 |
5 | 1005 | 宇田津 聖智 | ウダツ キヨトモ | 1965/09/04 | 男 | A | 営業部 | 1987/04/01 |
6 | 1006 | 茨城 昭児 | イバラキ ショウジ | 1963/04/28 | 男 | O | 営業部 | 1985/04/01 |
7 | 1007 | 石ヶ休 椎茄 | イシガキュウ シイナ | 1953/02/21 | 男 | O | 営業部 | 1975/04/01 |
8 | 1008 | 赤司 恵治郎 | アカツカサ ケイジロウ | 1968/08/02 | 男 | O | 経理部 | 1990/04/01 |
9 | 1009 | 小橋 仰一 | オハシ ギョウイチ | 1972/03/02 | 男 | B | 経理部 | 1994/04/01 |
10 | 1010 | 一重 公大 | イチジュウ コウダイ | 1964/04/19 | 男 | B | 経理部 | 1986/04/01 |
11 | 1011 | 稲並 勝五郎 | イナミ ショウゴロウ | 1962/02/18 | 男 | A | 営業部 | 1984/04/01 |
12 | 1012 | 穎原 紀代一 | エイハラ キヨカズ | 1965/02/13 | 男 | O | 営業部 | 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>
|