0

ControlCollection から ASP ページの一部のコントロールを無効にしたいと考えています。

これは私のコードです。

foreach (System.Web.UI.Control c in ControlCollection)
{
   if (c.GetType().FullName.Equals("System.Web.UI.WebControls.Table"))
   {
        TableRow t = (TableRow)c;
        t.Enabled = false;
   }
   else if (c.GetType().FullName.Equals("System.Web.UI.WebControls.TextBox"))
   {
        TextBox t = (TextBox)c;
        t.Enabled = false;
   }
  .......
  ......
  ///Like this I do for all controls
}

これについては、より良いアプローチが必要です。インターネットで検索しましたが、解決策が見つかりませんでした。

4

3 に答える 3

0

使ってみてくださいis

if (c is Table)
{

}
else if (c is TextBox)
{

}

またはswitch、型名に対してステートメントを実行することを検討してください。

switch (c.GetType().Name.ToLower())
{
  case "table":
    break;
  case "textbox":
    break;
}
于 2013-05-21T08:21:21.793 に答える
0

リスト内のすべてのコントロールは System.Web.UI.WebControl から継承していますか? もしそうなら、このコードが役立つかもしれません。(自分でテストしませんでした)

Type wc = new System.Web.UI.WebControls.WebControl(HtmlTextWriterTag.A).GetType();

    foreach (System.Web.UI.Control c in ControlCollection)
    {
        if (c.GetType().IsSubclassOf(wc))
        {
            ((System.Web.UI.WebControls.WebControl)c).Enabled = false;
        }
    }

さらにエレガントに (Shadow Wizard に感謝)

ControlCollection.OfType<System.Web.UI.WebControls.WebControl>().ToList().ForEach(c => c.Enabled = false);
于 2013-05-21T08:31:14.830 に答える