- - PR -
GridViewのテキスト取得 Template使用
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-11 13:52
どっとねっとふぁんさん
レスありがとう御座います。
追加処理は、呼ばれていないので 大丈夫かと思います。 ボタンが押された後、GridViewは、FindControlで取得 は、可能だったのですが、TextBoxは取得するとnullでした。。 なくなってる感じです。。ボタンを押すと、テキストボックスは 消えてしまいます。。 原因は、そこら辺かと思うのですが、 ボタンの押されたときにポストバックで、TextBox部分が 破棄されるのでしょうか?・・ | ||||||||
|
投稿日時: 2006-10-11 14:09
テンプレートフィールドの追加処理はどのタイミングで実行されているのでしょうか?GridView に動的に追加したカラムはポストバックのたびに作り直す必要があります。 | ||||||||
|
投稿日時: 2006-10-11 14:22
かるあさん、
レスありがとう御座います。 詳しく説明いたします。 画面上にAグリッドとBグリッドの二つがあります。 Aグリッドの編集ボタンが押されたら、 選択されたデータによって、 Bグリットにテキストボックスを作成します(動的)。 その作成されたテキストボックスにデータを入力して ボタンが押されたら、その入力されたデータを取得 したいと思っています。 下記の様にボタンが押されて作り直した場合は、 入力されたテキストデータもなくなってしまうのでは、 ないのでしょうか??
| ||||||||
|
投稿日時: 2006-10-11 15:19
ステップ実行でデバッグしてみてください。ポストバック時の GridView_Edit.Rows[0].FindControl("TextBoxNo0"); ↑このコードは oTextBox.ID = "TextBoxNo" + ColumnsCount.ToString(); ↑このコードの後に通っていますか? ID設定が後だったら、当然FindControlでは見つからないですね(まだデフォルトのIDのままだから) | ||||||||
|
投稿日時: 2006-10-11 15:34
べるさん、
レスありがとうございます。
Aグリットの編集ボタンを押されると そのイベントの中で、編集画面を作成し 動的にテキストを配置しています(Bグリット) その処理の中でFindContorlを行った場合は 取得できるのですが、その後に表示された画面で テキスト部に入力をして、ボタンを押しクリックイベント時に 入力されたテキストを取得したいのですが、 FindControlを行うとnullが入っているのです。。 テキストボックスがなくなってしまっているようなのです。 ボタンを押され、ポストバックが起きて テキストボックスが破棄されてるみたいです ポストバック前に、データを取得は、 可能なのでしょうか? もしくは、ポストバック前に、FindControlを 行うような方法は、あるのでしょうか? どうしていいか、困っています。。 ご教授よろしく御願いいたします。 [ メッセージ編集済み 編集者: ken 編集日時 2006-10-11 15:39 ] | ||||||||
|
投稿日時: 2006-10-11 16:30
一応代替案として、動的に作成なとせずに、普通に作っておいて表示非表示を切り替える、
とか、POSTパラメータを直接受け取る、などもありますが、
「テキスト部に入力をして、ボタンを押しクリックイベント時」とではPageインスタンスが 異なりますから。クリックイベント時にはどのタイミングでテキストボックスを生成していますか? それがFindControlより前で、前と同じIDが振られていればうまくいくと思います。 生成していないのであれば当然、破棄されたようになります。
サーバでデータ取得はできないですね。 | ||||||||
|
投稿日時: 2006-10-11 18:27
べるさん、
レスありがとうございます。 ボタンを押される前の HTMLをコードに変換をしてみてました <input name="GridView_Edit$ctl02$TextBoxNo0" type="text" id="GridView_Edit_ctl02_TextBoxNo0" style="width:70px;" /> POSTをやってみたのですが、 同じようにnullでした。。 ■抜粋 else { String Test = Request.Form["GridView_Edit_ctl02_TextBoxNo0"]; String Test1 = Request.Form["TextBoxNo0"]; } もう少し、考えて見ます。 | ||||||||
|
投稿日時: 2006-10-11 19:02
|