- - PR -
動的に作成したhtmlコントロールにrunat属性を追加する方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-31 13:00
はじめまして。
ASP.NETで動的に生成したHtmlInputHiddenコントロールに runat=server属性を追加したいのですが、 どのように記述すればいいか教えて頂けませんでしょうか。 | ||||
|
投稿日時: 2004-01-31 18:24
saruboboさん、こんばんは。
動的に、というのは、例えば何かのイベントハンドラ内で Dim hdn As HtmlInputHidden = New HtmlInputHidden Me.Controls.Add(hdn) みたいに生成する、ということですよね? 生成された時点でこれはサーバコントロールだと思うんですけど、そういう話じゃないんでしょうか...。 | ||||
|
投稿日時: 2004-01-31 19:33
きくちゃんさん、早速の回答ありがとうございます。
>生成された時点でこれはサーバコントロールだと思うんですけど、 >そういう話じゃないんでしょうか...。 おっしゃる通りです。やりたい事はHtmlInputHiddenのValue値に値を セットしたいだけなのですが、下記の様にPostBackされた時に 最初の値(非ポストバック時)と違う値をセットしたいのですが、 非ポストバック時は正しい値がセットされるのですが、ポストバック時に プログラム上では値("aaa")はセットされるのですが、実行してHTMLソースを表示させると value値にポストバックするの前の値(下記だと"bbb")が書き出されてしまうのです。 静的に作成したコントロール(下記hidA)は問題なく動作するのですが、 動的に作成したコントロール(hidB)だとうまく動かないのです。 その違いを考えたところ 明示的にrunat=server属性を指定しないといけないのかと考えた次第です IDをポストバック前と後で違うものにすれば動くのですが、あまり実用的で ないもので。。。。。。 他に解決方法があれば教えて頂けませんでしょうか。 よろしくお願いいたします。 Dim myControl1 As HtmlForm = FindControl("Form1") Dim hidA As HtmlInputHidden = FindControl("hidA") '静的コントロール Dim hidB As HtmlInputHidden = New HtmlInputHidden() '動的コントロール hidB.ID = "hidB" If Page.IsPostBack = True Then hidB.Value = "aaa" hidA.Value = "aaa" Else hidB.Value = "bbb" hidA.Value = "bbb" End If myControl1.Controls.Add(hidB) | ||||
|
投稿日時: 2004-02-01 16:38
が〜ん。送ったつもりなかったのに・・・ということで削除[ メッセージ編集済み 編集者: Jitta 編集日時 2004-02-01 17:15 ] | ||||
|
投稿日時: 2004-02-01 17:14
属性にrunat=serverを追加するだけなら、
.attribute.add("runat", "server") でいいのでしょうが・・・ これって、Page_Loadの時点で作るのなら、PostDataメソッドでは、誰がポストされたデータを受け取るんでしょうねぇ? 参照: http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconcontrolexecutionlifecycle.asp | ||||
|
投稿日時: 2004-02-01 17:53
Jittaさん、ご回答ありがとうございます。
> 属性にrunat=serverを追加するだけなら、 >.attribute.add("runat", "server") >でいいのでしょうが・・・ この方法ではタグの属性として出力されてしまうのです↓ <input type="hidden" name="hidB" runat="server"> 静的コントロールだとできてしまうのに、 動的コントロールだとできないというのが よく理解できないのです。。。。。。。 | ||||
|
投稿日時: 2004-02-01 18:55
はずしているかもしれませんが
hidBをNewするのはPostBackがFalseの時で PostBackがTrueの時は Dim hidB As HtmlInputHidden = FindControl("hidB") とやるべきなのではないでしょうか? | ||||
|
投稿日時: 2004-02-01 21:04
burton999さん、ご回答ありがとうございます。
>PostBackがTrueの時は >Dim hidB As HtmlInputHidden = FindControl("hidB") >とやるべきなのではないでしょうか? ポストバックされてきた時にはhidBは存在していない為、 駄目みたいです。。。 |