|
検索
Searchメソッドにて指定したシートのデータを検索することができます。
検索時には3種類の検索オプションが提供されます。
1.検索文字列内の大文字と小文字を検索時に区別するかどうか
2.完全一致文字列だけを検索するかどうか
3.検索を行から列の順ではなく、列から行の順で実行するかどうか
また、セルのデータだけではなく、セルノートの値やTagプロパティに設定してある文字列を検索することも可能です。
このサンプルでも、検索オプションとして、上記3つ検索パターンを使用することができます。
検索対象の文字列が存在するセルは文字列が存在した場所により、背景色を変更しています。
・セルのテキスト内に存在する場合:薄ピンク
・セルノートに存在する場合:オレンジ
・セルのTagプロパティに存在する場合:緑
※Tagプロパティの設定内容はソースからご確認ください。
セルノートはA1セルにのみ設定しています。
検索条件:
| ID | 氏名 | カナ | 生年月日 | 性別 | 血液型 | 部署 | 入社日 | メールアドレス |
1 | 1001 | 亀甲 滋万 | キコウ シゲマ | 1950/02/04 | 男 | A | 人事部 | 1972/04/01 | sigema_kikou@abc.co.jp |
2 | 1002 | 寒田 希世 | カンダ キヨ | 1959/06/28 | 女 | B | 人事部 | 1981/04/01 | kiyo_kanda@bbb.or.jp |
3 | 1003 | 小和瀬 澄 | オワセ キヨ | 1969/03/06 | 男 | A | 人事部 | 1991/04/01 | kiyo_owase@aaa.co.jp |
4 | 1004 | 宇夫 早余子 | ウブ サヨコ | 1976/07/28 | 女 | O | 人事部 | 1998/04/01 | sayoko_ubu@bbb.or.jp |
5 | 1005 | 宇田津 聖智 | ウダツ キヨトモ | 1965/09/04 | 男 | A | 営業部 | 1987/04/01 | kiyotomo_udatu@abc.co.jp |
6 | 1006 | 茨城 昭児 | イバラキ ショウジ | 1963/04/28 | 男 | O | 営業部 | 1985/04/01 | shouzi_ibaraki@xyz.ne.jp |
7 | 1007 | 石ヶ休 椎茄 | イシガキュウ シイナ | 1953/02/21 | 男 | O | 営業部 | 1975/04/01 | siina_isigagyuu@abc.co.jp |
8 | 1008 | 赤司 恵治郎 | アカツカサ ケイジロウ | 1968/08/02 | 男 | O | 経理部 | 1990/04/01 | keizirou_akatukasa@abc.co.jp |
9 | 1009 | 小橋 仰一 | オハシ ギョウイチ | 1972/03/02 | 男 | B | 経理部 | 1994/04/01 | gyouiti_ohasi@abc.co.jp |
10 | 1010 | 一重 公大 | イチジュウ コウダイ | 1964/04/19 | 男 | B | 経理部 | 1986/04/01 | koudai_itizyuu@xyz.ne.jp |
11 | 1011 | 稲並 勝五郎 | イナミ ショウゴロウ | 1962/02/18 | 男 | A | 営業部 | 1984/04/01 | shougorou_inami@bbb.or.jp |
12 | 1012 | 穎原 紀代一 | エイハラ キヨカズ | 1965/02/13 | 男 | O | 営業部 | 1987/04/01 | kiyokazu_eihara@bbb.or.jp |
|
ソースコード
別ウィンドウで表示
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
public partial class search : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string js = "var spid='" + FpSpread1.ClientID + "';";
js += "var txtid='" + txtSearch.ClientID + "';";
ClientScript.RegisterStartupScript(this.GetType(), "onStartUpScript", js, true);
if (IsPostBack) return;
// データ連結
DataSet ds = new DataSet();
ds.ReadXml(MapPath("../App_Data/data.xml"));
FpSpread1.DataSource = ds;
// SPREAD初期化
InitSpread(FpSpread1.Sheets[0]);
}
private void InitSpread(FarPoint.Web.Spread.SheetView sheet)
{
// SPREAD設定
sheet.FpSpread.CommandBar.Visible = false;
sheet.FpSpread.CssClass = "spreadStyle";
sheet.FpSpread.UseClipboard = false;
// フォントサイズの設定
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[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 = 71;
sheet.Columns[8].Width = 181;
// 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;
// セルノート設定
sheet.Cells[0, 0].Note = "人事異動予定";
// タグ設定
sheet.Cells[1,0].Tag = "退職予定";
}
protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
{
// 検索
if (e.CommandName.StartsWith("search"))
{
// 背景色初期化
FpSpread1.Sheets[0].Cells[0, 0, FpSpread1.ActiveSheetView.RowCount - 1,
FpSpread1.ActiveSheetView.ColumnCount - 1].BackColor = System.Drawing.Color.White;
// 検索文字列の取得
int n = e.CommandName.IndexOf(".") + 1;
string searchStr = e.CommandName.Substring(n);
// 検索文字列が空白なら終了
if (searchStr.Trim() == "") return;
// 検索オプションを取得
bool caseSensitive = ckOptions.Items[0].Selected;
bool exactMatch = ckOptions.Items[1].Selected;
bool useWildcards = ckOptions.Items[2].Selected;
bool alternateSearch = false;
// 変数を初期化
int rowIndex = 0;
int colIndex = 0;
for (int startRow = 0; startRow < FpSpread1.Sheets[0].RowCount; startRow++)
{
for (int startColumn = 0; startColumn < FpSpread1.Sheets[0].ColumnCount; startColumn++)
{
FarPoint.Web.Spread.SearchFoundFlags sff;
sff = FpSpread1.Search(FpSpread1.ActiveSheetViewIndex, searchStr, caseSensitive,
exactMatch, alternateSearch, useWildcards,
true, true, true,true, startRow, startColumn, startRow, startColumn, ref rowIndex, ref colIndex);
// 該当データの有無を判断
switch (sff)
{
case FarPoint.Web.Spread.SearchFoundFlags.CellNote:
FpSpread1.Sheets[0].Cells[rowIndex, colIndex].BackColor = System.Drawing.Color.Orange;
break;
case FarPoint.Web.Spread.SearchFoundFlags.CellTag:
FpSpread1.Sheets[0].Cells[rowIndex, colIndex].BackColor = System.Drawing.Color.YellowGreen;
break;
case FarPoint.Web.Spread.SearchFoundFlags.CellText:
FpSpread1.Sheets[0].Cells[rowIndex, colIndex].BackColor = System.Drawing.Color.PeachPuff;
break;
default:
break;
}
}
}
}
}
}
|
Partial Public Class search
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 txtid='" + txtSearch.ClientID & "';"
ClientScript.RegisterStartupScript(Me.GetType(), "onStartUpScript", js, True)
If IsPostBack Then
Return
End If
' データ連結
Dim ds As New System.Data.DataSet()
ds.ReadXml(MapPath("../App_Data/data.xml"))
FpSpread1.DataSource = ds
' SPREAD初期化
InitSpread(FpSpread1.Sheets(0))
End Sub
Private Sub InitSpread(ByVal sheet As FarPoint.Web.Spread.SheetView)
' SPREAD設定
sheet.FpSpread.CommandBar.Visible = False
sheet.FpSpread.CssClass = "spreadStyle"
sheet.FpSpread.UseClipboard = False
' フォントサイズの設定
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(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 = 71
sheet.Columns(8).Width = 181
' 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle
' セルノート設定
sheet.Cells(0, 0).Note = "人事異動予定"
' タグ設定
sheet.Cells(1, 0).Tag = "退職予定"
End Sub
Protected Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
' 検索
If e.CommandName.StartsWith("search") Then
' 背景色初期化
FpSpread1.Sheets(0).Cells(0, 0, FpSpread1.ActiveSheetView.RowCount - 1, FpSpread1.ActiveSheetView.ColumnCount - 1).BackColor = System.Drawing.Color.White
' 検索文字列の取得
Dim n As Integer = e.CommandName.IndexOf(".") + 1
Dim searchStr As String = e.CommandName.Substring(n)
' 検索文字列が空白なら終了
If searchStr.Trim() = "" Then
Return
End If
' 検索オプションを取得
Dim caseSensitive As Boolean = ckOptions.Items(0).Selected
Dim exactMatch As Boolean = ckOptions.Items(1).Selected
Dim useWildcards As Boolean = ckOptions.Items(2).Selected
Dim alternateSearch As Boolean = False
' 変数を初期化
Dim rowIndex As Integer = 0
Dim colIndex As Integer = 0
For startRow As Integer = 0 To FpSpread1.Sheets(0).RowCount - 1
For startColumn As Integer = 0 To FpSpread1.Sheets(0).ColumnCount - 1
Dim sff As FarPoint.Web.Spread.SearchFoundFlags
sff = FpSpread1.Search(FpSpread1.ActiveSheetViewIndex, searchStr, caseSensitive, exactMatch, alternateSearch, useWildcards, _
True, True, True, True, startRow, startColumn, _
startRow, startColumn, rowIndex, colIndex)
' 該当データの有無を判断
Select Case sff
Case FarPoint.Web.Spread.SearchFoundFlags.CellNote
FpSpread1.Sheets(0).Cells(rowIndex, colIndex).BackColor = System.Drawing.Color.Orange
Exit Select
Case FarPoint.Web.Spread.SearchFoundFlags.CellTag
FpSpread1.Sheets(0).Cells(rowIndex, colIndex).BackColor = System.Drawing.Color.YellowGreen
Exit Select
Case FarPoint.Web.Spread.SearchFoundFlags.CellText
FpSpread1.Sheets(0).Cells(rowIndex, colIndex).BackColor = System.Drawing.Color.PeachPuff
Exit Select
Case Else
Exit Select
End Select
Next
Next
End If
End Sub
End Class
|
<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true"
Inherits="search" CodeFile="search.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 doSearch() {
var txt = document.getElementById(txtid).value;
if (txt != null && txt.length > 0) {
if (document.all != null) document.body.focus();
var ss = document.getElementById(spid);
ss.CallBack("search." + txt);
}
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div>検索条件:<asp:textbox id="txtSearch" runat="server" style="position: relative;"></asp:textbox>
<button id="Button1" onclick="doSearch()" type="button" value=" Go " style="position: static">実行</button>
</div>
<asp:checkboxlist id="ckOptions" runat="server" RepeatLayout="Flow"
RepeatDirection="Horizontal" style="position: relative">
<asp:ListItem Value="0">大文字と小文字を区別する </asp:ListItem>
<asp:ListItem Value="1">完全に一致 </asp:ListItem>
<asp:ListItem Value="2">ワイルドカードを使用 </asp:ListItem>
</asp:checkboxlist>
<farpoint:FpSpread ID="FpSpread1" runat="server"
onbuttoncommand="FpSpread1_ButtonCommand">
<CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
ButtonShadowColor="ControlDark" />
<Sheets>
<farpoint:SheetView SheetName="Sheet1">
</farpoint:SheetView>
</Sheets>
</farpoint:FpSpread>
</asp:Content>
|
|