サーバーサイド検証
検証コントロールを使用してサーバー側の検証を有効にできます。検証機能を有効にするにはセル型で提供されているAllowServerValidatorsプロパティをtrueに設定し、
ボタンコントロールが押されポストバックが起きるタイミングで行われます。
項目
|
検証内容
|
ID
|
1000~1999以外の入力がエラーになります。この列に対する検証はRangeValidatorを使用しています。
|
氏名
|
ブランクがエラーになります。この列に対する検証はRequiredFieldValidatorを使用しています。
|
氏名(カタカナ)
|
カタカナ以外を入力するとエラーになります。この列に対する検証はRegularExpressionValidatorを使用しています。
|
入社日
|
日付として認識できない文字列および2000年より前の日付がエラーになります。この列に対する検証はCustomValidatorを使用しています。
|
| ID | 氏名 | カタカナ | 入社日 | メールアドレス | パスワード |
1 | 1001 | 風間佳乃 | カザマヨシノ | 2001/08/19 | yoshino_kazama@dvrvqkdgjh.ih | kaz79313 |
2 | 1002 | 中川雪子 | ナカガワユキコ | 2006/11/17 | onakagawa@zfjtagjj.ufg | nak22276 |
3 | 1003 | 重田栄治 | シゲタエイジ | 2012/02/06 | eijishigeta@drouk.mg | sige47855 |
4 | 1004 | 牧舞子 | マキマイコ | 2003/03/07 | Maiko_Maki@piaq.co | mak24396 |
5 | 1005 | 森田理緒 | モリタリオ | 2007/11/08 | rio07101@yjixuhlkxe.ck | mori35724 |
6 | 1006 | 毛利音羽 | モウリオトハ | 2001/03/18 | amouri@npgcw.tbz | mouri79794 |
7 | 1007 | 平尾達行 | ヒラオタツユキ | 2008/09/11 | Tatsuyuki_Hirao@vtzezb.sfriz.cyd | hirao56429 |
8 | 1008 | 藤島百合子 | フジシマユリコ | 2001/02/23 | yurikofujishima@vvngva.rgh | hiji5215 |
9 | 1009 | 福永晴奈 | フクナガハルナ | 2004/04/28 | Haruna_Fukunaga@cajoi.hc | tomi83136 |
10 | 1010 | 相馬智子 | ソウマトモコ | 2006/04/20 | osouma@cdlhqz.rhy.vb | sou66502 |
|
|
ソースコード
別ウィンドウで表示
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class servervalidation : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
// SPREADの設定
InitSpread(FpSpread1);
// シート設定
InitSpreadStyles(FpSpread1.Sheets[0]);
}
private void InitSpread(FarPoint.Web.Spread.FpSpread spread)
{
spread.CssClass = "spreadStyle";
spread.UseClipboard = false;
// データ連結
System.Data.DataSet ds = new System.Data.DataSet();
ds.ReadXml(MapPath("../App_Data/dataimvalidators.xml"));
spread.DataSource = ds;
}
private void InitSpreadStyles(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.Columns[0].Width = 70;
sheet.Columns[1].Width = 120;
sheet.Columns[2].Width = 120;
sheet.Columns[3].Width = 120;
sheet.Columns[4].Width = 180;
sheet.Columns[5].Width = 140;
// 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;
RangeValidator RangeValidator1 = new RangeValidator();
RangeValidator1.EnableClientScript = false;
RangeValidator1.Type = ValidationDataType.Integer;
RangeValidator1.MaximumValue = "1999";
RangeValidator1.MinimumValue = "1000";
RangeValidator1.ErrorMessage = "1000~1999の間で入力してください";
// RangeValidatorを使用
FarPoint.Web.Spread.TextCellType tc1 = new FarPoint.Web.Spread.TextCellType();
tc1.AllowServerValidators = true;
tc1.Validators.Add(RangeValidator1);
sheet.Columns[0].CellType = tc1;
RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator();
RequiredFieldValidator1.EnableClientScript = false;
RequiredFieldValidator1.ErrorMessage = "ブランクは許可されません";
// RequiredFieldValidatorを使用
FarPoint.Web.Spread.TextCellType tc2 = new FarPoint.Web.Spread.TextCellType();
tc2.AllowServerValidators = true;
tc2.Validators.Add(RequiredFieldValidator1);
sheet.Columns[1].CellType = tc2;
RegularExpressionValidator RegularExpressionValidator1 = new RegularExpressionValidator();
RegularExpressionValidator1.EnableClientScript = false;
RegularExpressionValidator1.ValidationExpression = "[ァ-ヴ]*";
RegularExpressionValidator1.ErrorMessage = "全角カタカナを入力してください";
// RegularExpressionValidatorを使用
FarPoint.Web.Spread.TextCellType tc3 = new FarPoint.Web.Spread.TextCellType();
tc3.AllowServerValidators = true;
tc3.Validators.Add(RegularExpressionValidator1);
sheet.Columns[2].CellType = tc3;
// CustomValidatorを使用
FarPoint.Web.Spread.DateTimeCellType dc1 = new FarPoint.Web.Spread.DateTimeCellType();
dc1.AllowServerValidators = true;
dc1.Validators.Add(CustomValidator1);
dc1.ErrorMessage = "日付として認識できません";
sheet.Columns[3].CellType = dc1;
}
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
// 2000年以降か判定
DateTime dt = new DateTime(2000, 1, 1);
if (dt > DateTime.Parse(args.Value))
{
args.IsValid = false;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
FpSpread1.SaveChanges();
}
}
|
Partial Class servervalidation
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' SPREADの設定
InitSpread(FpSpread1)
' シート設定
InitSpreadStyles(FpSpread1.Sheets(0))
End Sub
Private Sub InitSpread(ByVal spread As FarPoint.Web.Spread.FpSpread)
spread.CssClass = "spreadStyle"
spread.UseClipboard = False
' データ連結
Dim ds As New System.Data.DataSet()
ds.ReadXml(MapPath("../App_Data/dataimvalidators.xml"))
spread.DataSource = ds
End Sub
Private Sub InitSpreadStyles(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.ColumnFooter.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%")
' 列幅の設定
sheet.Columns(0).Width = 70
sheet.Columns(1).Width = 120
sheet.Columns(2).Width = 120
sheet.Columns(3).Width = 120
sheet.Columns(4).Width = 180
sheet.Columns(5).Width = 140
' 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle
Dim RangeValidator1 As New RangeValidator()
RangeValidator1.EnableClientScript = False
RangeValidator1.Type = ValidationDataType.Integer
RangeValidator1.MaximumValue = "1999"
RangeValidator1.MinimumValue = "1000"
RangeValidator1.ErrorMessage = "1000~1999の間で入力してください"
' RangeValidatorを使用
Dim tc1 As New FarPoint.Web.Spread.TextCellType()
tc1.AllowServerValidators = True
tc1.Validators.Add(RangeValidator1)
sheet.Columns(0).CellType = tc1
Dim RequiredFieldValidator1 As New RequiredFieldValidator()
RequiredFieldValidator1.EnableClientScript = False
RequiredFieldValidator1.ErrorMessage = "ブランクは許可されません"
' RequiredFieldValidatorを使用
Dim tc2 As New FarPoint.Web.Spread.TextCellType()
tc2.AllowServerValidators = True
tc2.Validators.Add(RequiredFieldValidator1)
sheet.Columns(1).CellType = tc2
Dim RegularExpressionValidator1 As New RegularExpressionValidator()
RegularExpressionValidator1.EnableClientScript = False
RegularExpressionValidator1.ValidationExpression = "[ァ-ヴ]*"
RegularExpressionValidator1.ErrorMessage = "全角カタカナを入力してください"
' RegularExpressionValidatorを使用
Dim tc3 As New FarPoint.Web.Spread.TextCellType()
tc3.AllowServerValidators = True
tc3.Validators.Add(RegularExpressionValidator1)
sheet.Columns(2).CellType = tc3
' CustomValidatorを使用
Dim dc1 As New FarPoint.Web.Spread.DateTimeCellType()
dc1.AllowServerValidators = True
dc1.Validators.Add(CustomValidator1)
dc1.ErrorMessage = "日付として認識できません"
sheet.Columns(3).CellType = dc1
End Sub
Protected Sub CustomValidator1_ServerValidate(source As Object, args As ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
' 2000年以降か判定
Dim dt As New DateTime(2000, 1, 1)
If dt > DateTime.Parse(args.Value) Then
args.IsValid = False
End If
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FpSpread1.SaveChanges()
End Sub
End Class
|
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="servervalidation.aspx.cs" Inherits="servervalidation" %>
<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeaderPlaceHolder1" Runat="Server">
<style type="text/css">
.imvalidatorstable
{
width: 660px;
}
.imvalidatorstable td
{
border: solid 1px #dfdfdf;
font-size: 80%;
}
</style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table class="imvalidatorstable" border="0" rules="none">
<tr>
<td style="width:120px; background-color: #72558d; color: #efefef;">
項目
</td>
<td style="width:360px; background-color: #72558d; color: #efefef;">
検証内容
</td>
</tr>
<tr>
<td>
ID
</td>
<td>
1000~1999以外の入力がエラーになります。この列に対する検証はRangeValidatorを使用しています。
</td>
</tr>
<tr>
<td>
氏名
</td>
<td>
ブランクがエラーになります。この列に対する検証はRequiredFieldValidatorを使用しています。
</td>
</tr>
<tr>
<td>
氏名(カタカナ)
</td>
<td>
カタカナ以外を入力するとエラーになります。この列に対する検証はRegularExpressionValidatorを使用しています。
</td>
</tr>
<tr>
<td>
入社日
</td>
<td>
日付として認識できない文字列および2000年より前の日付がエラーになります。この列に対する検証はCustomValidatorを使用しています。
</td>
</tr>
</table>
<br />
<asp:Button ID="Button1" runat="server" Text="ポストバック" OnClick="Button1_Click" />
<FarPoint:FpSpread ID="FpSpread1" runat="server">
<CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
ButtonShadowColor="ControlDark">
</CommandBar>
<Sheets>
<FarPoint:SheetView SheetName="Sheet1">
</FarPoint:SheetView>
</Sheets>
</FarPoint:FpSpread>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="2000年以降を入力してください" ForeColor="White" OnServerValidate="CustomValidator1_ServerValidate" EnableClientScript="False"></asp:CustomValidator>
</asp:Content>
|