asp.netのrepeaterで表示・編集・登録処理を行う その2

asp.netのrepeaterで表示・編集・登録処理を行う その1Repeaterを使って、下記のようなhtmlを動的に出力することが出来ました。今回はクライアント側での入力制御とサーバ側での登録処理を説明します。

選手一覧
選手名国籍怪我キャプテン

クライアントIDの考え方

asp.netのrepeaterで表示・編集・登録処理を行う その1の最後で少し触れましたが、aspxファイルに定義したRepeaterの中のコントロールのIDはサーバ処理で使うためのIDであって、レスポンスされるコントロールのIDではありません

なので、ID=txtNameのテキストボックスを定義しても、レスポンスされるテキストボックスのIDはrepeater1_ctr0_txtNameなどになってしまいます。

なので、javascriptgetElementById("txtName")とやっても取得できないので注意が必要です。

ラジオボタンを1つのみ選択可能にする

NAME属性が変わってしまうことにより、ラジオボタンの制御に問題が出てしまいます。

ラジオボタンはNAME属性が同じものはその中で1つのみ選択することができるのですが、Repeaterで出力するとNAME属性が一意にならずに複数選択することができてしまいます。

具体的には下記のようになってしまいます

性別(両方選択できてしまいます)男:   女:
対策として、クライアント側のロードイベントでラジオボタンのNAME属性を変更します。 ```javascript //jQuery $(document).ready(function () { $("#repeater1 input:radio").attr("name", "cap"); }); ``` `jQuery`を使わない場合は、少し複雑になります。[[aspnet-repeater-access-javascript]]で`Repeater`で動的に出力したコントロールにアクセスする方法を紹介しています。

サーバ処理でRepeater内のコントロールを取得

クライアント側でユーザが値を変更して、submitし、その値をサーバ処理で取得します。

ItemDataBoundで値をセットした時と同じように、1行に対してFindControlを使用して取得します。

For Each Item As RepeaterItem In repeater1.Items
  'テキストボックスのコントロールを取得 Itemは現在の行のhtml(aspx)です
  Dim textControl As HtmlInputTextBox = CType(Item.FindControl("txtName"), HtmlInputTextBox)
  'コントロールにバインドしたデータの値を更新項目にセットします
  parameter_test = textControl.value
  '更新処理...
Next

これで基本的な、表示→編集→登録の一連の流れが実装できました。

次回は、行ごとにイベントを定義して、編集での機能をいろいろと追加します。


関連記事

  • asp.netのrepeaterで表示・編集・登録処理を行う その1

    ASP.NETのWEBサーバコントロールのRepeaterコントロールを使用し、データの表示・編集・登録処理の流れの実装例を紹介します。具体的には、DBに登録されているデータをRepeaterコントロ...


  • asp.net|repeaterで出力したラジオボタンを1つのみ選択する方法

    Repeaterの中にラジオボタンを定義して出力すると、下記のように複数選択できてしまいます。原因はRepeaterで出力する際にIDとNAME属性が変わってしまうためです。詳しくはaspnet-re...


  • asp.netのrepeaterで出力時にjavascriptのイベントを定義する

    asp.netのrepeaterで表示・編集・登録処理を行う その2でrepeaterを使って、表示→編集→登録の一連の流れが実装できました。今回は、表示→編集→登録のうち、編集について、もっと細かい...


  • asp.netのrepeaterで出力したコントロールにjavascriptでアクセスする

    ASP.NETのRepeaterで動的に出力したコントロールにjavascriptでアクセスする方法を紹介します。例として、登録ボタン押下時に、選手名のテキストボックスが未入力の場合はアラートを表示す...


  • asp.netのポストバックの基本

    aspでは、画面再表示時にテキストボックスなどのコントロールの値を保持・復元するためには、コントロールの値をsubmitし、サーバ処理でコントロールのプロパティに再セットして状態を復元する必要がありま...


  • asp.netのhtmlサーバコントロールの基本

    asp.netの基本・aspとの違いで紹介したコードはaspxファイルに(htmlレイアウトのファイル)に、まだstrNameやdetailなど、サーバ処理の変数が残っています。htmlサーバコントロ...


  • asp.netのイベントの基本と注意事項

    押下したボタンによってサーバ処理を分岐したい場合(例:登録ボタン、削除ボタン、検索ボタンなど)、いままでの方法では処理区分としてhiddenをsubmitし、処理を分岐していました。ASP.NETでは...


  • asp.netの基本・aspとの違い

    ここまでaspを用いてWEBアプリの基本を説明してきましたが、ここまでのサンプルコードを見てわかるように、aspはレスポンスするhtmlのレイアウトとサーバ処理が1つのファイルに記載しているため、複雑...


  • 地附山で自然に触れ合い心も体もリフレッシュ

    日常から抜けだして、自然に触れて心も体もリフレッシュしたいなら、長野県の地附山がおすすめです。トレッキングというよりもハイキングのような感じで、登山装備もいらずに気軽に歩けるのでおすすめスポットです。...


  • 須坂市の絶景スポット米子大瀑布の紹介

    8月の新緑の季節に行ってきました長野県須坂市の米子大瀑布の、壮大な自然が絶景でとても感動したので紹介します。米子大瀑布は、須坂市の山中にある2つの滝です。米子大瀑布にあるこれらの滝は日本の滝百選に選ば...