HtmlSelect コントロールの ServerChange イベントを発生させます。この機能により、イベントのカスタム ハンドラを作成できます。
Protected Overridable Sub OnServerChange( _
ByVal e As EventArgs _)
[C#]
protected virtual void OnServerChange(EventArgse);
[C++]
protected: virtual void OnServerChange(EventArgs* e);
[JScript]
protected function OnServerChange(
e : EventArgs);
パラメータ
- e
イベント データを格納している System.EventArgs 。
解説
HtmlSelect コントロールで選択された項目がサーバーへのポスト間で変更された場合は ServerChange イベントが発生します。
メモ このイベントは、[送信] ボタンのクリックなど、ユーザーがサーバーへのポスト バックを開始したときにだけ発生します。このイベントがサーバーにポスト バックするわけではありません。
メモ ServerChange イベントが正常に動作するためには、コントロールのビューステートを有効にしておく必要があります。
ユーザーがコントロールの選択を変更する場合は、このイベントを使用して HtmlSelect コントロールのデータ検証を実行できます。
イベントが発生すると、デリゲートを使用してイベント ハンドラが呼び出されます。詳細については、「 イベントの発生 」を参照してください。
OnServerChange メソッドを使用すると、デリゲートを結び付けずに、派生クラスでイベントを処理させることもできます。派生クラスでイベントを処理する場合は、この手法をお勧めします。
継承時の注意: 派生クラスで OnServerChange をオーバーライドする場合は、登録されているデリゲートがイベントを受け取ることができるように、基本クラスの OnServerChange メソッドを呼び出してください。
使用例
[Visual Basic, C#, JScript] HtmlSelect コントロールの ServerChange イベントのイベント ハンドラを指定およびコード化する方法の例を次に示します。このイベント ハンドラは、選択された各項目に互換性があるかどうかを確認します。
<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
Sub Button_Click (sender As Object, e As EventArgs)
Dim i As Integer
Label1.Text = "You selected:"
For i = 0 to Select1.Items.Count - 1
If Select1.Items(i).Selected Then
Label1.Text = Label1.Text & "<br> -" & Select1.Items(i).Text
End If
Next i
End Sub
Sub Server_Change (sender As Object, e As EventArgs)
Dim i As Integer
Dim Count As Integer = 0
For i = 0 to Select1.Items.Count - 1
If Select1.Items(i).Selected Then
Count = Count + 1
End If
Next i
If Count > 1 And Select1.Items(0).Selected Then
Label2.Text = "Hey! You can't select 'All' with another selection!!"
Else
Label2.Text = ""
End If
End Sub
</script>
</head>
<body>
<form runat="server">
<h3> HtmlSelect Example </h3>
Select items from the list: <br><br>
<select id="Select1"
Multiple="True"
OnServerChange="Server_Change"
runat="server">
<option value="All"> All </option>
<option value="1" Selected="True"> Item 1 </option>
<option value="2"> Item 2 </option>
<option value="3"> Item 3 </option>
<option value="4"> Item 4 </option>
<option value="5"> Item 5 </option>
<option value="6"> Item 6 </option>
</select>
<br><br>
<button id="Button1"
OnServerClick="Button_Click"
runat="server">
Submit
</button>
<br><br>
<asp:Label id="Label1"
runat="server"/>
<br>
<asp:Label id="Label2"
runat="server"/>
</form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
void Button_Click (Object sender, EventArgs e)
{
Label1.Text = "You selected:";
for (int i=0; i<=Select1.Items.Count - 1; i++)
{
if (Select1.Items[i].Selected)
Label1.Text += "<br> -" + Select1.Items[i].Text;
}
}
void Server_Change (Object sender, EventArgs e)
{
int Count = 0;
for (int i=0; i<=Select1.Items.Count - 1; i++)
{
if (Select1.Items[i].Selected)
Count++;
}
if ((Count > 1) && (Select1.Items[0].Selected))
Label2.Text = "Hey! You can't select 'All' with another selection!!";
else
Label2.Text = "";
}
</script>
</head>
<body>
<form runat="server">
<h3> HtmlSelect Example </h3>
Select items from the list: <br><br>
<select id="Select1"
Multiple="True"
OnServerChange="Server_Change"
runat="server">
<option value="All"> All </option>
<option value="1" Selected="True"> Item 1 </option>
<option value="2"> Item 2 </option>
<option value="3"> Item 3 </option>
<option value="4"> Item 4 </option>
<option value="5"> Item 5 </option>
<option value="6"> Item 6 </option>
</select>
<br><br>
<button id="Button1"
OnServerClick="Button_Click"
runat="server">
Submit
</button>
<br><br>
<asp:Label id="Label1"
runat="server"/>
<br>
<asp:Label id="Label2"
runat="server"/>
</form>
</body>
</html>
[JScript]
<%@ Page Language="JScript" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
function Button_Click (sender : Object, e : EventArgs) : void
{
Label1.Text = "You selected:";
for (var i : int =0; i<=Select1.Items.Count - 1; i++)
{
if (Select1.Items[i].Selected)
Label1.Text += "<br> -" + Select1.Items[i].Text;
}
}
function Server_Change (sender : Object, e : EventArgs) : void
{
var Count : int = 0;
for (var i : int =0; i<=Select1.Items.Count - 1; i++)
{
if (Select1.Items[i].Selected)
Count++;
}
if ((Count > 1) && (Select1.Items[0].Selected))
Label2.Text = "Hey! You can't select 'All' with another selection!!";
else
Label2.Text = "";
}
</script>
</head>
<body>
<form runat="server">
<h3> HtmlSelect Example </h3>
Select items from the list: <br><br>
<select id="Select1"
Multiple="True"
OnServerChange="Server_Change"
runat="server">
<option value="All"> All </option>
<option value="1" Selected="True"> Item 1 </option>
<option value="2"> Item 2 </option>
<option value="3"> Item 3 </option>
<option value="4"> Item 4 </option>
<option value="5"> Item 5 </option>
<option value="6"> Item 6 </option>
</select>
<br><br>
<button id="Button1"
OnServerClick="Button_Click"
runat="server">
Submit
</button>
<br><br>
<asp:Label id="Label1"
runat="server"/>
<br>
<asp:Label id="Label2"
runat="server"/>
</form>
</body>
</html>
[Visual Basic]
<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
Sub Button_Click (sender As Object, e As EventArgs)
' Display the selected items.
Label1.Text = "You selected:"
Dim i As Integer
For i=0 To Select1.Items.Count - 1
If Select1.Items(i).Selected Then
Label1.Text &= "<br> -" & Select1.Items(i).Text
End If
Next i
End Sub
Sub Server_Change(sender As Object, e As EventArgs)
' The ServerChange event is commonly used for data validation.
' This method will display a warning if the "All" option is
' selected in combination with another item in the list.
Dim Count As Integer = 0
Dim i As Integer
' Determine the number of selected items in the list.
For i=0 To Select1.Items.Count - 1
If Select1.Items(i).Selected Then
Count = Count + 1
End If
Next i
' Display an error message if more than one item is selected with
' the "All" item selected.
If ((Count > 1) And (Select1.Items(0).Selected)) Then
Label2.Text = "Hey! You can't select 'All' with another selection!!"
Else
Label2.Text = ""
End If
End Sub
Sub Page_Load(sender As Object, e As EventArgs)
' Create an EventHandler delegate for the method you want to
' handle the event, and then add it to the list of methods
' called when the event is raised.
AddHandler Select1.ServerChange, AddressOf Server_Change
AddHandler Button1.ServerClick, AddressOf Button_Click
End Sub
</script>
</head>
<body>
<form runat="server">
<h3> HtmlSelect ServerChange Example </h3>
Select items from the list: <br><br>
<select id="Select1"
Multiple="True"
runat="server">
<option value="All"> All </option>
<option value="1" Selected="True"> Item 1 </option>
<option value="2"> Item 2 </option>
<option value="3"> Item 3 </option>
<option value="4"> Item 4 </option>
<option value="5"> Item 5 </option>
<option value="6"> Item 6 </option>
</select>
<br><br>
<button id="Button1"
runat="server">
Submit
</button>
<br><br>
<asp:Label id="Label1"
runat="server"/>
<br>
<asp:Label id="Label2"
runat="server"/>
</form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
void Button_Click (Object sender, EventArgs e)
{
// Display the selected items.
Label1.Text = "You selected:";
for (int i=0; i<=Select1.Items.Count - 1; i++)
{
if (Select1.Items[i].Selected)
Label1.Text += "<br> -" + Select1.Items[i].Text;
}
}
void Server_Change(Object sender, EventArgs e)
{
// The ServerChange event is commonly used for data validation.
// This method will display a warning if the "All" option is
// selected in combination with another item in the list.
int Count = 0;
// Determine the number of selected items in the list.
for (int i=0; i<=Select1.Items.Count - 1; i++)
{
if (Select1.Items[i].Selected)
Count++;
}
// Display an error message if more than one item is selected with
// the "All" item selected.
if ((Count > 1) && (Select1.Items[0].Selected))
{
Label2.Text = "Hey! You can't select 'All' with another selection!!";
}
else
{
Label2.Text = "";
}
}
void Page_Load(Object sender, EventArgs e)
{
// Create an EventHandler delegate for the method you want to
// handle the event, and then add it to the list of methods
// called when the event is raised.
Select1.ServerChange += new System.EventHandler(this.Server_Change);
Button1.ServerClick += new System.EventHandler(this.Button_Click);
}
</script>
</head>
<body>
<form runat="server">
<h3> HtmlSelect Server Change Example </h3>
Select items from the list: <br><br>
<select id="Select1"
Multiple="True"
runat="server">
<option value="All"> All </option>
<option value="1" Selected="True"> Item 1 </option>
<option value="2"> Item 2 </option>
<option value="3"> Item 3 </option>
<option value="4"> Item 4 </option>
<option value="5"> Item 5 </option>
<option value="6"> Item 6 </option>
</select>
<br><br>
<button id="Button1"
runat="server">
Submit
</button>
<br><br>
<asp:Label id="Label1"
runat="server"/>
<br>
<asp:Label id="Label2"
runat="server"/>
</form>
</body>
</html>
[C++] C++ のサンプルはありません。Visual Basic、C#、および JScript のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
HtmlSelect クラス | HtmlSelect メンバ | System.Web.UI.HtmlControls 名前空間 | ServerChange | System.EventArgs