VS2019備忘録
アプリケーション構成ファイル(Web.config)
- Webアプリケーションで利用する設定情報をXMLで保存したもの(環境変更に強くなる)
- プロジェクト新規作成時に自動的に生成される
- DBへの接続情報は<connectionStrings>タグに記述される
- DBサーバーを変更したい場合はこちらを書き換えるだけで良い
ポストバック(ASP)
- ASPでは、ボタンコントロールはASPタグで配置されている
- 通常のHTMLボタンではなく、サーバーコントロール
- 実行時にはsubmitのinputタグに変換される
- 通常のHTMLではボタンを押すたびにフォームの内容がリセットされてしまう
- ASPでは「ビューステート」と呼ばれるhiddenのinputタグとして値を保存しているため、ボタンを押しても内容が復元される(各コントロールの状態も復元される)
- 通常は、ポスト→処理後のページに遷移 ASPは、データ送信・処理を行い自身のページに戻る
日付のカスタム書式
書式指定子 | 説明 | 出力例 |
---|---|---|
yyyy | 4けたの年 | 2004 |
yy | 0埋め2けたの年 | 04 |
MM | 0埋め2けたの月 | 08 |
dd | 0埋め2けたの日 | 24 |
ddd | 曜日の省略名(カルチャに依存) | 火 |
dddd | 曜日の完全名(カルチャに依存) | 火曜日 |
HH | 0埋め2けたの時間(24時間表記) | 20 |
hh | 0埋め2けたの時間(12時間表記) | 08 |
mm | 0埋め2けたの分 | 23 |
ss | 0埋め2けたの秒 | 06 |
- フィールドバインドで形式を指定する時は、{0:yyyy/MM/dd}のように指定
- 文字列への変数埋め込みをするため0:みたいな書き方になる(https://blog.hiros-dot.net/?p=6407)
- 詳しくは(https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings)
ディティールビューとフォームビュー
- ディティールビューは簡単にきれいなレイアウトのカード型を作成できるが、テンプレートの編集機能を利用して自由なレイアウトを組むことはできない
- ディティールビューは項目数の少ないデータを簡単に表示したい場合に使う
- 詳細に設計する場合はフォームビューを使う
- ディティールビューについてはこちら(https://www.atmarkit.co.jp/fdotnet/dotnettips/840aspdetailsview1/aspdetailsview1.html)
HyperLinkフィールド
- DataNavigateUrlFields:遷移先のフォームでデータを表示するための値を示す列名(例:customerID)
- DataNavigateUrlFormatString:遷移先のWEBフォームのアドレス(同一フォルダの場合はプログラム名のみでOK)(例:CustomerCard.aspx?id={0} ?以降はクエリ文字列となる id=customerIDとしても良いが、id={0}とするとDataNavigateUrlFieldsで入力した値となる)
- DataTextField:グリッドビューの一覧に表示する列名(例:customer_name)
- SortExpression:並べ替えに使用する列名(例:customer_name)
- HeaderText:グリッドビューの一覧における項目名(例:顧客名)
- 呼び出される側の処理
- DBの抽出条件でQueryStringを設定する(URLでid=で呼ばれる場合はidとする)→呼び出し側のクエリ文字列のパラメータと同じにする
CommandNameプロパティ
- ボタンやリンクボタン等をクリックしたときに実行するコマンドを指定する
- Editとすると編集用テンプレートを表示する
- Newと指定すると新規追加用テンプレートを表示できる
- Edit→編集モード
- New→挿入モード
- Insert→入力された内容でデータを挿入する
- Update→入力された内容でデータを更新する
- Delete→データを削除する
- Cancel→ユーザーの操作を取り消して表示モードに戻る
フィールドのバインドが選択できない場合
- 表示形式を{0:yyyy/MM/dd}にしたいのにフィールドのバインドが選択できない場合は、カスタムバインドのコード式ボックスに直接入力を行う(今回の例だとBind("first_action_date","{0:yyyy/MM/dd}"))
EvalとBindの違い
- Bindメソッドは、データベースとの双方向(読み取り・書き込み)のバインディング(結合)を可能とするもの
- Evalメソッドは、読み取り専用のため更新はできない
AppendDataBoundItemsプロパティ
- ドロップダウンリストで使用する
- 参考(https://blog.jhashimoto.net/entry/20110225/1298589836)
- 使用時の問題点(http://natchan-develop.seesaa.net/article/49164594.html)
CommandNameプロパティ
- Updateと指定 → フォーム上のBindメソッドが指定されたコントロールのデータを更新する
- Cancel → キャンセルして編集を終える
- Insert → コントロールに登録された値を利用して新規追加する(データソースに指定したInsertステートメントを利用)
ページロード時にクエリ文字列idが指定されているかどうかを判定して、指定がない場合は新規追加用テンプレートを表示する
Updateボタン、リンククリック後の処理の流れ
- 「ItemUpdatingイベント」→「データベースの更新」→「ItemUpdatedイベント」