- - PR -
PlaceHolder内のascxにアクセスしたい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-03-07 14:04
お世話になります。
PlaceHolder内のコントロールへのアクセスについて質問させて下さい。 VS2003で開発を行っています。 A.ascx上にPlaceHolderを配置し、そこにLoadControlでB.ascxを読み込んでいます。 B.ascxには諸事情があってディレクティブを記述していません。 A.ascx上にはボタンを配置し、Clickイベント時にPlaceHolder内の B.ascxのコントロールの値を読み込もうとしているのですが、ポストバック時に B.ascxがページから消えてしまうようで、読み込めません。 B.ascxのコントロールの値を読み込むにはどうしたらよいのでしょうか? 以下、ソースです。 ------------------ [A.ascx.cs] protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.PlaceHolder PlaceHolder1; private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) PlaceHolder1.Controls.Add(LoadControl("B.ascx")); } private void Button1_Click(object sender, System.EventArgs e) { String strBuff; foreach(Control ctrl in PlaceHolder1.Controls){ if(ctrl is TextBox) strBuff += ctrl.ID + ": " + ((TextBox)ctrl).Text + " "; // *** strBuffに何も書き込まれない *** } } [B.ascx] <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /> ------------------ どなたか原因等ご存じであれば教えてください。 どうぞよろしくお願いいたします。 |
|
投稿日時: 2007-03-07 18:35
上記のコードでTextBoxの値をとる場合、
if(!IsPostBack) をはずし、 foreach(Control ctrl in PlaceHolder1.Controls){ を foreach(Control ctrl in PlaceHolder1.Controls[0].Controls){ に変更することで値が取れると思います。 |
1