Day05-2

概要

このレッスンの狙い

クエリ文字列をSqlDataSourceコントロールに引き渡す

クエリ文字列(URLパラメータ)


~/Details.aspx?sid=123&sdate=20180601

FormViewコントロール

FormViewコントロールとDetailviewコントロールの違い

FormViewコントロールで利用可能なテンプレート

テンプレート 概要
ItemTemplate 個別アイテムの表示
FotterTemplate フッタ部分
EditItemTemplate 個別アイテムの更新
HeaderTemplate ヘッダ部分
InsertItemTemplate 個別アイテムの新規登録
EmptyDataTemplate データが存在しない場合の表示
PagerTemplate ページャ部分
FormViewコントロールで利用可能なCommandName/CommandArgumentプロパティ
CommandName CommandArgument 概要
New - [新規操作]ボタン
Insert - [挿入]ボタン
Delete - [削除]ボタン
Edit - [編集]ボタン
Update - [更新]ボタン
Cancel - [キャンセル]ボタン
Page Next 次のページへ移動
Page Prev 前のページへ移動
Page First 最初のページへ移動
Page Last 最後のページへ移動

FormViewコントロールのItemXxxxxing/ItemXxxxxedイベント

ItemXxxxxingイベント


Protected Sub fv_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs)
  If Not Page.IsValid Then
	  e.Cancel = True
	End If
End Sub

解説

ItemXxxxxedイベント


Protected Sub fv_ItemInserted(ByVal sender As Object, ByVal e As System.WebControls.FormViewInsertedEventArgs)
  Response.Redirect("Calender.aspx")
End Sub

解説

参考: データソースコントロールにプログラムから値をバインド


Protected Sub fv_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs)
  If Page.IsValid Then
	  Dim subject As TextBox = DirectCast(fv.FindControl("txtSubject"), TextBox)
	  Dim sdate As TextBox = DirectCast(fv.FindControl("txtSdate"), TextBox)
	  Dim stime As TextBox = DirectCast(fv.FindControl("txtStime"), TextBox)
		e.Values("subject") = subject.Text
		e.Values("sdate") = sdate.Text
		e.Values("stime") = stime.Text
	Else
	  e.Cancel = True
	End If
End Sub

解説

リダイレクトと転送との違い


Protected Sub fv_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertedEventArgs)
  Server.Transfer("Calendar.aspx")
End Sub

リダイレクト


@startuml
Actor Client
Node WebServer

Client -> WebServer:1.ページXを要求
Client <- WebServer:2.ページの結果をClientに応答
Client -> WebServer:3.ページYを自動リクエスト
Client -> WebServer:4.ページYの結果を応答
@enduml

Redirect

転送


@startuml
Actor Client
Node WebServer

Client -> WebServer:1.ページXを要求
WebServer - WebServer:2.サーバ内でページXからYへ処理を転送
Client <- WebServer:3.ページYの結果を応答
@enduml

Transfer

解説

転送の方がリダイレクトよりも高いパフォーマンスが望める

リクエスト情報を引き継げるのは、転送のみ

転送を利用できるのは、サーバ内のページ間のみ

まとめ

以上

TOPへ