- - PR -
GridViewにTemplateFieldを追加
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-22 15:46
質問です。よろしくお願いします。
VB.NET2005で開発しています。Webです。 GridViewにコードからTemplateFieldを追加し テキストボックスを追加したいと考えています。 あらかじめデザイナで配置したりもしたのですが、テキストボックスのIDを 自分で振りたいため、コードで追加できればと考えています。 詳しい方がいましたら、よろしくお願いします。 [ メッセージ編集済み 編集者: てぃと 編集日時 2007-02-22 15:46 ] | ||||
|
投稿日時: 2007-02-22 16:56
方法 : ASP.NET Web サーバー コントロールのテンプレートを動的に作成する
InstantiateInでコントロールを追加する際にIDを付けてあげてはどうでしょうか。 あ、でも結局はコントロールツリーに従ったIDになっちゃったような・・・。 | ||||
|
投稿日時: 2007-02-23 01:00
かめたろさん
返信ありがとうございます。 Repeaterコントロールを使用するのでしょうか? 試行錯誤しているものの、どうにもこうにもうまくいきません。 MSDNを見ていると、Repeater1.HeaderTemplate = New ・・・となっていますが、 そもそも何故いきなりRepeater1と来ているのかが不明です。 申し訳ありませんが、この辺りの解説をお願いできないでしょうか? | ||||
|
投稿日時: 2007-02-23 01:13
「テンプレートを使用するすべてのコントロール (DataList、Repeater、GridView、 FormView、および DetailsView) に関して、テンプレートをコードで作成できます。」 と書いてありますよね。GridViewを使いたいならRepeaterじゃなくてGridViewを使えば いいわけです。 そもそもなぜ自分でIDを振りたいんですか? | ||||
|
投稿日時: 2007-02-23 02:34
べるさん、返答ありがとうございます。
さっそく、実験してみます。 IDを振りたい理由ですが、どの項目に入力がされたか判定したかったので 自分で振りたいと思いました。イメージとしては、以下のような感じです。 行番号 詳細 1 □ (001 田中) 2 □ (005 佐藤) 3 □ (011 近藤) □はテキストボックスとなります。 ()はラベルです。 ここで、例えば田中さんのテキストボックスに入力があった場合、登録処理を 行いたいのですが、入力値は誰のテキストボックスかわからないため テキストボックスに001のコードを付与して番号を持っておこう、と考えていました。 | ||||
|
投稿日時: 2007-02-23 03:31
GridView1.Rows[2] とかで行がとれますんで あとは あらかじめデザイナで配置したときのIDでFindControlでコントロールが取れると思います。 [追記] ぁ、ごめんなさい。任意のIDを振りたいわけですね。 私だったらRowDataBoundイベントあたりで振るかなぁ。結局IDは GridView1_ctl06_001 みたいになっちゃいますがRowsで回してFindControlすれば取得はできますし。 [ メッセージ編集済み 編集者: べる 編集日時 2007-02-23 03:40 ] | ||||
|
投稿日時: 2007-02-23 04:24
べるさん、何度もありがとうございます。 RowDataBoundイベントを調べてみたところ、良さそうな感じがします。 しかし、どうやってデザイナで配置したTextBoxを取得するかで詰まりました。。。 行を取得したときの状態がどうなっているのか、まだ理解できていないため そこから調べてみます。 | ||||
|
投稿日時: 2007-02-23 14:49
e.Rowでバインドされる行(GridViewRow)が取れるのでe.Row.FindControl("TextBox1")と すればデザイナで配置した"TextBox1"が取れると思います。注意が必要なのはこのイベントは ヘッダ等の分も発生するのでe.Row.RowTypeがDataControlRowType.DataRowかどうかをみて 判断する必要があります。 ただ、どうせ行が取れるんならhidden等にIDを埋め込んでもいいし、GridView+DataSource 使ってるならDataSourceのUpdateQuery等をいじればコーディングの必要すらないかもしれません。 |