画面内の全ての項目を取得する方法
スポンサーリンク
ASP.NET(C#) で画面内の全ての項目(WebControl)を取得するメソッドは無いので、自分で処理を記述する必要があります。
次のサンプルコードは、引数に渡されたコントロール配下にある全てのコントロール(WebControl)を取得します。画面内の全ての項目を取得したい場合は、Page を引数に指定します。
C#(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //引数に渡したControl内にあるWebControlを再帰的に検索して全てListに //格納して返します。 //ページ内の全項目を取得したい場合はPageを引数に渡します。 protected List<WebControl> GetAllWebControl(Control parent) { var controls = new List<WebControl>(); foreach (Control child in parent.Controls) { controls.AddRange(GetAllWebControl(child)); } if (parent is WebControl) { //WebControlとそのサブクラスのみListに追加。 controls.Add((WebControl)parent); } return controls; } |
上記の使用例は次の通りです。次のサンプルコードでは、 Page 内にある全ての WebControl(
まずは画面のサンプルコードです。
aspxファイル(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <asp:Panel ID="panel1" runat="server"> <asp:Panel ID="panel2" runat="server"> <asp:TextBox ID="text1" runat="server"/> <asp:TextBox ID="text2" runat="server"/> </asp:Panel> <asp:Panel ID="panel3" runat="server"> <asp:TextBox ID="text3" runat="server"/> </asp:Panel> <asp:Label ID="label1" runat="server" /> </asp:Panel> <asp:Button ID="button1" runat="server" OnClick="Button1_Click" /> |
次に全ての項目を取得するサンプルコードです。
C#(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | protected void Button1_Click(object sender, EventArgs e) { //this(Page)を引数に渡すと、ページ内の全項目をListで取得する。 List<WebControl> webControls = GetAllWebControl(this); label1.Text = ""; foreach (WebControl control in webControls) { label1.Text += control.ID + "<br />"; } } //引数に渡したControl内にあるWebControlを再帰的に検索して全てListに //格納して返します。 //ページ内の全項目を取得したい場合はPageを引数に渡します。 protected List<WebControl> GetAllWebControl(Control parent) { var controls = new List<WebControl>(); foreach (Control child in parent.Controls) { controls.AddRange(GetAllWebControl(child)); } if (parent is WebControl) { //WebControlとそのサブクラスのみListに追加。 controls.Add((WebControl)parent); } return controls; } } |
上記を実行すると、Label1 に全ての項目のIDが表示されます。 Label1 に表示される内容は次の通りです。
Label1の表示内容 | |
1 2 3 4 5 6 7 8 | text1 text2 panel2 text3 panel3 label1 panel1 button1 |
スポンサーリンク